Avatar billede Slettet bruger
28. november 2010 - 14:31 Der er 9 kommentarer og
1 løsning

Indlæse en txt fil i en currencyedit

Jeg har en txt fil med 2 poster:

30
50

NU vil jeg gerne have indlæg begge i forholdsvis en

CurrencyEdit9
CurrencyEdit10

Hvordan gør jeg det?

Eftersom at string og integer ikke er compatibel så skal der laves en StrToInt....
Avatar billede 2Mida Praktikant
28. november 2010 - 14:34 #1
Kig på TIniFile - den kan håndterer alt det der, også asInteger eller asString
Avatar billede kroning Nybegynder
28. november 2010 - 14:40 #2
Utestet, jeg ved ikke om det hedder .value ved dine CurrencyEdits

var
sl : TStringList;
begin
sl=TStringList.Create;
sl.LoafFromFile("din fil.txt");
CurrencyEdit9.Value=StrToInt(sl[0]);
CurrencyEdit10.Value=StrToInt(sl[1]);
sl.Free;
end;
Avatar billede kroning Nybegynder
28. november 2010 - 14:41 #3
og det skal self. være:
sl:=TStringList.Create;
sl.LoafFromFile("din fil.txt");
CurrencyEdit9.Value:=StrToInt(sl[0]);
CurrencyEdit10.Value:=StrToInt(sl[1]);

der manglede nogle : , jeg var i java mode
Avatar billede Slettet bruger
28. november 2010 - 14:54 #4
Tak kroning

smid et svar....
Avatar billede hrc Mester
28. november 2010 - 14:56 #5
Bruger currency-komponenten et heltal? Troede nærmere datatypen ville være ... ja, en currency.

En stringlist, sådan som Kroning foreslår, er en fin løsning. Det er naturligvis kun for eksemplets simplicitet, at han ikke tjekker om der virkelig er 2 linjer, samt at der ikke bruges StrToIntDef.

procedure HentVaerdier(aFilename: string; var aC1, aC2: currency);
var
  i: integer;
  List: TStringList;
begin
  List := TStringList.Create;
  try
    List.LoadFromFile(aFilename);
    aC1 := 0.0;
    aC2 := 0.0;
    for i := 0 to List.Count - 1 do
      case i of
        0: aC1 := StrToFloatDef(List[i],0.0);
        1: aC2 := StrToFloatDef(List[i],0.0);
        else
          // Håndt. hvis der er flere end 2 linjer i fil
      end;
  finally
    List.Free;
  end;
end;
Avatar billede kroning Nybegynder
28. november 2010 - 15:11 #6
Og svar.
Avatar billede kroning Nybegynder
28. november 2010 - 15:17 #7
Man kunne også lave en under routine

procedure HentVaerdier(aFilename: string; var aC1, aC2: currency);
var
  i: integer;
  List: TStringList;

function getval(lpos : integer) : currency;
begin
if lpos<List.count then
  Result:=StrToFloatDef(List[lpos],0.0)
else
  Result:=0;
end;

begin
  List := TStringList.Create;
  try
    List.LoadFromFile(aFilename);
    aC1 := getval(0);
    aC2 := getval(1);
  finally
    List.Free;
  end;
end;
Avatar billede Slettet bruger
28. november 2010 - 15:31 #8
Hrc...det har du ret i for hvis en linie er slettet så ville programmet låse så det er naturlig for en rutine at tjekke for det forhold..

Takker for den øjenåbner "S"
Avatar billede Slettet bruger
28. november 2010 - 15:32 #9
Hrc..

Min currencyedit kan håndtere både heltal og kommatal.
Avatar billede martinlind Nybegynder
29. november 2010 - 14:07 #10
sharon må jeg ikke ha' lov at lede din opmærksomhed hen på knappen F1 ( hjælp ) der findes en fin hjælp af StrToInt() funktionen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester