Hej,
jeg har en tekst fil fra en benzinstation, hvor jeg vil overføre alle
tilgodesedler til en ny fil.
Mit problem er at ikke alle tilgodesedler overføres til den nye fil.
Hvorfor?
Er der noget i filen som kan bremse søgningen?
Eller er der en variabel som bliver fuldt op?
Filen kan være rimelig stor (over 200 sider).
Håber der er en som kan hjælpe.
Med venlig hilsen
Harald Thomsen
Eksempel på filen
02003-08-30 10:12 T01-N4082
0INDBETALT BEL\B 50 DKK
0BLYFRI 92 6.27 LI 50.00 DKK
0P01 7.97 KR/L
02003-08-30 10:15 T01-N4083
0INDBETALT BEL\B 400 DKK
0BLYFRI 95 49.81 LI 400.00 DKK
0P02 8.03 KR/L
02003-08-30 10:18 T01-N4084
0INDBETALT BEL\B 50 DKK
0BLYFRI 95 3.90 LI 31.32 DKK
0P02 8.03 KR/L
0TILGODE 18.68 DKK
02003-08-30 10:25 T01-C6512
0BLYFRI 92 50.43 LI 401.93 DKK
0P01 7.97 KR/L
0HYDRO TEXACO KORT
0NR 704102000000???????
02003-08-30 10:28 T01-C6513
0DIESEL 74.58 LI 444.50 DKK
0P04 5.96 KR/L
0HYDRO TEXACO KORT
0NR 704102000000???????
02003-08-30 10:37 T01-C6514
0BLYFRI 95 52.65 LI 422.78 DKK
0P02 8.03 KR/L
procedure TForm1.findtilgodesedlerClick(Sender: TObject);
var
indfil, tempfil, udfil: TextFile;
betaling, literpris, dato, tid, liter, vare, belb, tilgode, indbetalt:
String;
S: String;
i: Integer;
buffer: array [1..5] of string;
begin
if OpenDialog1.Execute then
begin
AssignFile(indfil, OpenDialog1.FileName);
reset(indfil);
deletefile('c:\unox\tempfil.txt');
rewrite(tempfil, 'c:\unox\tempfil.txt');
deletefile('c:\unox\tilgode.txt');
rewrite(udfil, 'c:\unox\tilgode.txt');
// erstat , med . ;
while not eof(indfil) do
begin
readln(indfil, S);
For i:=1 to Length(S) do
if S[i]='.' then S[i]:=',';
writeln(tempfil, S);
end;
CloseFile(indfil);
CloseFile(tempfil);
end;
// indlæs alle TILGODE sedler
begin
try
assignfile(tempfil,'c:\unox\tempfil.txt');
reset(tempfil);
// Overskrift i filen
writeln(udfil, 'Dato ;tid ;Betaling;Slags ;Pris ;Liter
;Beløb ;Tilgode;Indbetalt');
try
buffer[1]:= '';
buffer[2]:= '';
buffer[3]:= '';
buffer[4]:= '';
buffer[5]:= '';
while not eof(tempfil) do
begin
buffer[1]:= buffer[2];
buffer[2]:= buffer[3];
buffer[3]:= buffer[4];
buffer[4]:= buffer[5];
readln(tempfil, buffer[5]);
// hvis TILGODE findes kopieres værdierne til de enkelte
variable
if (pos('TILGODE', buffer[5])>0) then
begin
betaling := 'KONTANT';
literpris := copy(buffer[4],13,5);
dato := copy(buffer[1],2,10);
tid := copy(buffer[1],13,5);
liter := copy(buffer[3],12,6);
vare := copy(buffer[3],2,10);
belb := copy(buffer[3],21,7);
tilgode := copy(buffer[5],15,7);
indbetalt := copy(buffer[2],18,7);
// Udskriver værdier for hver enkelt TILGODE seddel
til filen
write(udfil, dato);
write(udfil, ';');
write(udfil, tid);
write(udfil, ';');
write(udfil, betaling);
write(udfil, ';');
write(udfil, vare);
write(udfil, ';');
write(udfil, literpris);
write(udfil, ';');
write(udfil, liter);
write(udfil, ';');
write(udfil, belb);
write(udfil, ';');
write(udfil, tilgode);
write(udfil, ';');
writeln(udfil, indbetalt);
end;
end;
except
showmessage('Fejl ved læsning af fil');
end;
CloseFile(tempfil);
except
showmessage('Fejl ved åbning af fil');
end;
end;
end;
vh
harald
|