Ups, was sehen meine Äugelein?
Der Fehler ist schon in der Write Routine. Da werden die Nummer der Datei (latestFileVersion) und die Recordnummern(Number of Records->num) nicht gespeichert oder gleich mit dem Array Inhalt überschrieben. Jedenfalls felhen in der Datei die beiden Zahlen 3 für Version und 3 bzw. 2 für die Indexe:
Delphi-Quellcode:
Const
LatestFileVersion = 3;
//......
.......
procedure TForm1.WriteFile(filename:string);
var
fil: file;
i: integer;
num: byte;
const ver: byte = LatestFileVersion; //<- Const LatestFileVersion = 3; steht nicht in der Datei
procedure WriteString(s:ShortString);
begin
BlockWrite(fil,s,succ(length(s)));
end;
begin
assignFile(fil,filename); rewrite(fil,1);
BlockWrite(fil,ver,sizeof(ver));
num:=length(VBilArray);
Label8.Caption:=inttostr(num)+' '+inttostr(ver);
BlockWrite(fil,num,sizeof(num)); //<- steht auch nicht in der MArray.txt
for i:=0 to high(VBilArray) do
with VBilArray[i] do begin
WriteString(Schuldsum);
WriteString(Rate);
WriteString(inttostr(RFaellig));
WriteString(Abbuchungstag);
end;
CloseFile(fil);
end;
//---------------------------------------------------------
procedure TForm1.Button6Click(Sender: TObject);
begin
WriteFile('MArray.txt');
end;