Die Variabel "SatzPosition" hab ich eingeführt, weil die Datensatzposition sonst immer auf den letzten Datensatz der Datei zeigte und das wollte ich nicht.
mein Record sieht so aus:
Delphi-Quellcode:
type
Rdatensatz = record
karteL1: string[255];
karteL2: string[255];
karteL3: string[255];
karteL4: string[255];
karteR1: string[255];
karteR2: string[255];
karteR3: string[255];
karteR4: string[255];
end;
const
BufferSize = 250;
Ich hab ausserdem noch etwas an der neu-Methode verändert, weil die Standard-Inhalte sonst nicht richtig vergeben wurden:
Delphi-Quellcode:
procedure TMainPart.HFneu();
var
Buffer: array[0..BufferSize - 1] of Rdatensatz;
i, p: integer;
begin
Seek(datei,0);
p:=0;
while not eof(datei) do begin //solange lesen, bis die Datei zu Ende ist
Read(datei, Buffer[p]);
inc(p); //entspr. p:=p+1
end;
CloseFile(datei); //Datei schließen...
Buffer[p].karteL1:='DS '+IntToStr(p+1)+'-l-1; '; //Am Ende leeren Datensatz anhängen
Buffer[p].karteL2:='DS '+IntToStr(p+1)+'-l-2; ';
Buffer[p].karteL3:='DS '+IntToStr(p+1)+'-l-3; ';
Buffer[p].karteL4:='DS '+IntToStr(p+1)+'-l-4; ';
Buffer[p].karteR1:='DS '+IntToStr(p+1)+'-r-1; ';
Buffer[p].karteR2:='DS '+IntToStr(p+1)+'-r-2; ';
Buffer[p].karteR3:='DS '+IntToStr(p+1)+'-r-3; ';
Buffer[p].karteR4:='DS '+IntToStr(p+1)+'-r-4; ';
ReWrite(datei); //... und neu anlegen
for i:=0 to p do write(datei, Buffer[i]);
//Datensätze (bis auf letzten) in Datei schreiben
positionieren(FileSize(datei)-1);
//Dateizeiger auf letzten Datensatz positionieren
LsatzCount.Caption:='Dateigröße: '+IntToStr(FileSize(datei))+';';
end;
Eventuell liegt da der Fehler, aber das ist sehr unwahrscheinlich oder?