Einzelnen Beitrag anzeigen

Phiennes

Registriert seit: 30. Nov 2008
Ort: Bochum
30 Beiträge
 
#1

Typisierte Dateien (Delphi-Treff)

  Alt 18. Mai 2009, 05:01
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
  Mit Zitat antworten Zitat