Einzelnen Beitrag anzeigen

Mr_Anderson

Registriert seit: 7. Okt 2004
Ort: Solingen
11 Beiträge
 
#19

Re: Array als Datei speichern

  Alt 8. Okt 2004, 15:42
nunja funktionieren stelle ich mir anders vor

Also es funktioniert nur einmal. Bei einem erneuten ausführen der laden funktion stüzt delphi komplett ab , wegen einer "Zugriffsverletzung".
Außerdem zeigt er mir nicht die Werte an, er zeigt nichts an im "showmessage":

Code sieht so aus:
Delphi-Quellcode:
type
    zeiten= packed record
      name: string;
      bzeit: string;
      versuch: integer;
    end;
var testr : array[1..20] of zeiten;

procedure TForm1.SpeedButton3Click(Sender: TObject);
var
    fs: TFileStream;
  i: Integer;
begin

  fs := TFileStream.Create('d:\HighScore.hs', fmOpenRead);
  try
    try
      // erstmal wieder leeren
      for i := 0 to length(testr) - 1 do
      begin
        testr[i].bzeit := '';
        testr[i].name := '';
        testr[i].versuch := 0;
      end;
      // aus Datei einlesen
      fs.ReadBuffer(testr, sizeof(testr));
      // und kucken was drinne steht
      for i := 0 to length(testr) - 1 do
      begin
        ShowMessage('Bzeit:'+testr[i].bzeit+#13#10+'Verusch:'+IntToStr(testr[i].versuch)+#13#10+'name'+testr[i].name);
      end;
    except
      // Lesefehler aufgetreten
      on E: EReadError do
        ShowMessage(E.Message);
    end;
  finally
    // fs wieder freigeben
    FreeAndNil(fs);
  end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
var outputfile : textfile;
    i : word;
    StrList: TStrings;
    y: integer;
    fs: TFileStream;
begin
  testr[1].name := 'muh';
  testr[2].name := 'jta';
  fs := TFileStream.Create('d:\HighScore.hs', fmCreate);
  try
    try
      // Array in Datei schreiben
      fs.WriteBuffer(testr, sizeof(testr));
    except
      // Schreibfehler aufgetreten
      on E: EWriteError do
        ShowMessage(E.Message);
    end;
  finally
    // fs wieder freigeben
    FreeAndNil(fs);
  end;
end;
  Mit Zitat antworten Zitat