Einzelnen Beitrag anzeigen

Phiennes

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

Re: Typisierte Dateien (Delphi-Treff)

  Alt 18. Mai 2009, 06:24
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?
  Mit Zitat antworten Zitat