Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programmzustand speichern und laden (https://www.delphipraxis.net/2024-programmzustand-speichern-und-laden.html)

Madeleine 3. Jan 2003 15:42


Programmzustand speichern und laden
 
Hi,
hab da natürlich mal wieder ne Frage und zwar...
Was würdet ihr empfehlen, um einen bestimmten Zustand eines Programms (z.b.: einen Spielzustand 8) ) zu speichern und dann auch wieder laden zu können. Ich habe etwas von INI-Dateien gehört, was haltet ihr davon und vielleicht könnt ihr mir auch ein paar Tips geben!

Dann schonma Danke im Voraus! :D

Sebastian Nintemann 3. Jan 2003 15:56

Hallo Madeleine, da würde ich dir tatsächlich zu einer INI Datei raten. Die sind recht einfach zu handhaben. Gehe ich richtig davon aus, dass du den Spielstand aus deinem "4 gewinnt" Spiel speichern willst? Wenn ja sollten für dich die Methoden TIniFile.WriteInteger und TIniFile.ReadInteger besonders interessant sein, da du den Zustand eines Spielfeldes ja als Integer speicherst. Guck dir diese Methoden, und TIniFile allgemein doch mal in der Delphi OH an, wenn du Fragen hast schreib ich dir auch gerne (ich bin sicher die anderen auch :wink: ) ein Beispiel.

Gruß, Sebastian

Madeleine 3. Jan 2003 19:29

naja.. :roll: ein kleines beispielchen wär schon nicht schlecht! :spin:
Da ich ja ein DrawGrid oder StringGrid verwende, gibt es da noch etwas zu beachten?
Gruß Madeleine

sakura 3. Jan 2003 20:05

Werte speichern
Delphi-Quellcode:
procedure TfrmMaim.SaveValues;
begin
  with TIniFile.Create('game.ini') do
  try
    WriteString('info', 'Letzter Spieler', FLastPlayer);
    WriteInteger('highscore', 'Beste Punktzahl', FHighScore);
  finally
    Free;
  end;
end;
Werte laden
Delphi-Quellcode:
procedure TfrmMaim.LoadValues;
begin
  with TIniFile.Create('game.ini') do
  try
    FLastPlayer := ReadString('info', 'Letzter Spieler', '');
    FHighScore := ReadInteger('highscore', 'Beste Punktzahl', 0);
  finally
    Free;
  end;
end;

Madeleine 3. Jan 2003 21:09

das habe ich schon so ungefähr verstanden, aber mir ist immer noch keine Idee gekommen, wie man das mit einem zweidimensionalen und auch noch dynamischen Array macht!
Geht das überhaupt?

thx

Tpercon 3. Jan 2003 21:15

Ganz einfach: In zwei Schlüsseln speicherst du die Größe des Arrays.
Dann brauchst du noch für jede Zelle nen Schlüssel und das ganze einfach über zwei Schleifen in die Ini speichern.

Gruß

phlux 3. Jan 2003 21:17

Hi!
Das ganze einfach in einem Stream speichern
Delphi-Quellcode:

//Für {ArrayTyp} setzt du den Array ein den du nutzt

procedure SaveArrayToStream(Array: {ArrayTyp});
var f: TFileStream;//Der Stream in dem wir das ganze speichern

begin
  try
    //Zuerst gucken ob es schon diese Datei gibt, Dateiname kann ja frei gewählt werden
    f := TFileStream.Create('C:\MeinArray.dat', fmOpenReadWrite);
  except
    //Wenn nein, erzeugen wir ihn schnell
    f := TFileStream.Create('C:\MeinArray.dat', fmCreate);
  end;
    //Der Prozedur übergebene "Array" wird in den Stream gespeichert
  f.WriteBuffer(Array, SizeOf(Array));
    //Der FileStream wird freigegeben
  f.Free;
end;
Code ohne gewähr, hab ihn nicht getestet, dürfte aber vom Theoretischen her funzen :)

Madeleine 4. Jan 2003 20:40

ok, danke, aber wie programmiert das ganze so, das man auch die Möglichkeit hat, mehrere Dateien zu speichern, das geht bei mir nämlich noch nicht!?!

nailor 4. Jan 2003 20:47

Du kannst doch den Dateinamen frei wählen. Wenn du dann das ganze mehrmals machst, und verschiedene Dateinamen wählst, dann werden auch verschiedene (also mehrere) Dateien gemacht.

Madeleine 4. Jan 2003 21:17

Liste der Anhänge anzeigen (Anzahl: 1)
na das ist es ja, ich gebe dem einen anderen Namen, rufe ich dann die alte Datei auf mit dem alten Namen, ist das neue dort eingespeichert!
...ganz komisch... :?
Hab mal mein Spiel angehängt, falls es jmd ausprobieren will
in Unit1 steht der Code dazu (ganz unten)
..ich werde mal weiter grübeln...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz