Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Array als Datei speichern

  Alt 7. Okt 2004, 23:02
So geht es:
Delphi-Quellcode:
// unser Record
type
  TScoreRecord = packed record
    Player: string[25];
    Score: Cardinal;
  end;

// unser Array vom Typ unseres Records
var
  ScoreRecord: array[0..2] of TScoreRecord;

procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin
  // Array fülllen
  ScoreRecord[0].Player := 'Hans';
  ScoreRecord[0].Score := 5;
  ScoreRecord[1].Player := 'Fritz';
  ScoreRecord[1].Score := 6;
  ScoreRecord[2].Player := 'Lieschen';
  ScoreRecord[2].Score := 4;
  // abspeichern
  fs := TFileStream.Create('d:\HighScore.hs', fmCreate);
  try
    try
      // Array in Datei schreiben
      fs.WriteBuffer(ScoreRecord, sizeof(ScoreRecord));
    except
      // Schreibfehler aufgetreten
      on E: EWriteError do
        ShowMessage(E.Message);
    end;
  finally
    // fs wieder freigeben
    FreeAndNil(fs);
  end;
end;

procedure TForm1.Button2Click(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(ScoreRecord) - 1 do
      begin
        ScoreRecord[i].Player := '';
        ScoreRecord[i].Score := 0;
      end;
      // aus Datei einlesen
      fs.ReadBuffer(ScoreRecord, sizeof(ScoreRecord));
      // und kucken was drinne steht
      for i := 0 to length(ScoreRecord) - 1 do
      begin
        ShowMessage(ScoreRecord[i].Player+#13#10+IntToStr(ScoreRecord[i].Score));
      end;
    except
      // Lesefehler aufgetreten
      on E: EReadError do
        ShowMessage(E.Message);
    end;
  finally
    // fs wieder freigeben
    FreeAndNil(fs);
  end;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat