Hi,
ich versuche mit Hilfe des
Tutorials von Delphi-Treff große Strings abzuspeichern.
Ich habe leider ein Problem mit der Lösch-Funktion.
Ich mach am besten mal ein Beispiel:
vor dem Löschen- Datensatz - String
- 0 - Inhalt[0]
- 1 - Inhalt[1]
- 2 - Inhalt[2]
- 3 - Inhalt[3]
- 4 - Inhalt[4]
- 5 - Inhalt[5]
nach dem Löschen von nur DS[1]- Datensatz - String
- 0 - Inhalt[0]
- 1 - Inhalt[2]
- 2 - Inhalt[4]
- 3 - Inhalt[5]
- 4 - Inhalt[5]
Das ist mein kaum veränderter Quelltext:
Delphi-Quellcode:
procedure TMainPart.HFdel();
var
Buffer: array[0..BufferSize - 1] of Rdatensatz; // erhöht Performance
i: Integer;
StartRecord, EndRecord, SatzPosition: Integer;
Max: Integer;
begin
// Datenzeiger wird VOR den akt. Datensatz gesetzt
Seek(Datei, FilePos(Datei)-1);
// Starten mit dem ersten Datensatz hinter dem zu löschenden
StartRecord := FilePos(Datei) + 1;
EndRecord := FileSize(Datei);
SatzPosition:= FilePos(datei);
while StartRecord < EndRecord do begin
// max. BufferSize Datensätze lesen
Max := BufferSize;
if Max > EndRecord - StartRecord then
Max := EndRecord - StartRecord;
Seek(Datei, StartRecord);
for i := 0 to Max - 1 do
Read(Datei, Buffer[i]);
// Datensätze zurückschreiben
Seek(Datei, StartRecord - 1);
for i := 0 to Max - 1 do
Write(Datei, Buffer[i]);
inc(StartRecord);
end;
// Datei ab hier abschneiden
Truncate(Datei);
Positionieren(SatzPosition);
end;
Ich hoffe ihr könnt mir weiter helfen, denn ich finde den Fehler einfach nicht.
lG Phiennes