[gelöst] Variablenwerte in txt.-Datei speichern

Für Fragen rund um die Ide und zum Debugger
Antworten
MTB1Leo
Beiträge: 32
Registriert: Do 20. Mär 2014, 18:00

[gelöst] Variablenwerte in txt.-Datei speichern

Beitrag von MTB1Leo »

Guten Abend,

Ich schreibe zur Zeit ein weiteres Spiel mit Lazarus und würde gern die Möglichkeit einfügen, einen Spielstand mittels txt.-Datei abzuspeichern und wieder zu laden.
Ist das mit Lazarus möglich?

Danke im Voraus! :)

MTB1Leo
Zuletzt geändert von MTB1Leo am Mo 3. Nov 2014, 12:45, insgesamt 1-mal geändert.
750GB HDD CPU: i3 boost 3.6Ghz RAM: 12GB GPU: ASUS RADEON R7 270X DC II

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Variablenwerte in txt.-Datei speichern

Beitrag von Socke »

Ja.

Jetzt überlegst dir noch mal, wie deine Frage lauten sollte. :D

Ein paar Tipps: Wer, Was, Warum, Wie, Wie viele, wann, wohin, wie oft, wo mit ...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MTB1Leo
Beiträge: 32
Registriert: Do 20. Mär 2014, 18:00

Re: Variablenwerte in txt.-Datei speichern

Beitrag von MTB1Leo »

^^

Ich würde gern wissen wie das geht und wie der Programmcode dafür grundsätzlich aussehen muss. ;)

MTB1Leo
750GB HDD CPU: i3 boost 3.6Ghz RAM: 12GB GPU: ASUS RADEON R7 270X DC II

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Variablenwerte in txt.-Datei speichern

Beitrag von Michl »

Es gibt eine Menge unterschiedlicher Möglichkeiten, um so etwas zu realisieren. In welcher Form liegen denn Deine Spielstandsdaten vor? Wann sollen diese wie gespeichert werden?

mögliche Hilfen:
http://wiki.lazarus.freepascal.org/Howto_Use_TSaveDialog/de
http://wiki.freepascal.org/XML_Tutorial/de#Erzeugen_einer_XML-Datei
http://wiki.freepascal.org/File_Handling_In_Pascal

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
theo
Beiträge: 10498
Registriert: Mo 11. Sep 2006, 19:01

Re: Variablenwerte in txt.-Datei speichern

Beitrag von theo »

MTB1Leo hat geschrieben:^^
Ich würde gern wissen wie das geht und wie der Programmcode dafür grundsätzlich aussehen muss. ;)


Die Art wie du fragst lässt darauf schliessen, dass zu vielleicht erstmal einen Einführungskurs machen solltest.
Dafür ist das Forum nicht da.

Trotzdem wären für deine Zwecke IniFiles wahrscheinlich das richtige:
http://wiki.freepascal.org/Using_INI_Files/de
http://www.delphi-treff.de/tutorials/da ... dateien/2/

Lion
Beiträge: 186
Registriert: Mo 24. Mär 2014, 09:58

Re: Variablenwerte in txt.-Datei speichern

Beitrag von Lion »

Ich würde das so machen -> http://wiki.freepascal.org/TXMLPropStorage/de

Ist die beste Lösung finde ich!

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Variablenwerte in txt.-Datei speichern

Beitrag von m.fuchs »

@Lion: Ob das die beste Lösung ist, kann man gar nicht wissen. Dafür sagt der OP leider viel zu wenig aus. Gerade beim Speichern von Spielständen wäre TXMLPropStorage nicht unbedingt meine erste Wahl. Häufig will man ja nicht Eigenschaften von Komponenten speichern, sondern Spieldaten.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Lion
Beiträge: 186
Registriert: Mo 24. Mär 2014, 09:58

Re: Variablenwerte in txt.-Datei speichern

Beitrag von Lion »

Ok... eignet sich etwa eine DB besser dafür, z.B. die SQLite DB?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Variablenwerte in txt.-Datei speichern

Beitrag von m.fuchs »

Klare Antwort: Das kommt darauf an.

Ich bin immer wieder erstaunt darüber, wie wenig Informationen in eine Anfrage gepackt werden. Und was für konkrete Antworten erwartet (und manchmal auch gegeben) werden. Diese Frage gehört auch dazu.
Wir wissen folgendes: Der OP möchte ein Spiel schreiben und er will wissen wie man den Spielstand speichert.
Was könnte man sich dazu überlegen?

Beispiel 1: Es geht um ein Zahlenratespiel. Der Computer "denkt sich eine Zahl aus", der Spieler muss sie in X Versuchen erraten.
Was muss man speichern? Die Zahl und die Anzahl der offenen Versuche.
Dafür kann man getrost eine Textdatei mit zwei Zeilen benutzen.

Beispiel 2: Eine super-realistische Militärsimulation. Es sollen sechs Divisionen auf dem Schlachtfeld antreten.
Wir speichern zu jedem Soldaten Gesundheitsdaten (Fitness, Verletzungswerte), Intelligenz, mitgeführte Handfeuerwaffen, Munitionsbestand, Position auf dem Gefechtsfeld, etc.
Das bedeutet bei sechs Divisionen 6 * 20.000 = 120.000 Datensätze für die Soldaten. Plus Zustand, Munition, Treibstoff, etc. für alle Fluggeräte, Panzer, Transporter und so weiter.
In diesem Fall wäre eine Datenbank sicher keine schlechte Idee.

Und zwischen diesen beiden Beispielen, gibt es noch unzählige Möglichkeiten.

Das Problem ist nur: Niemand weiß, was der OP für ein Spiel machen will, denn er sagt es uns nicht. Diese Art der Fragestellung ist vergleichbar mit einem Menschen der zum Arzt geht, die Hose herunterlässt, einen Haufen auf den Schreibtisch setzt und sagt: "Herr Doktor, verschreiben Sie mir etwas gegen meine Krankheit."
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Lion
Beiträge: 186
Registriert: Mo 24. Mär 2014, 09:58

Re: Variablenwerte in txt.-Datei speichern

Beitrag von Lion »

Also ich gehe davon aus, dass bei so einer "Anfängerfrage" es sich nur um ein einfaches Spiel handeln kann, daher eine einfache Lösung von mir. Als guter Dr. Prof. Arzt erkenne ich das sofort. :wink:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Variablenwerte in txt.-Datei speichern

Beitrag von m.fuchs »

Könntest du deine Empfehlung dann bitte noch begründen?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6204
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Variablenwerte in txt.-Datei speichern

Beitrag von Mathias »

Wieso so kompliziert, ein einfache Write/Read reicht hier vollkommen.

Wen deine Daten zwingend im Text-Format vorliegen müssen dann musst jeden Wert einzeln mit Writeln schreiben und mir Readln wieder einlesen.

Code: Alles auswählen

type
  TSpielstand = record  // Struktur Deiner Spieldaten
    Level, Leben, Munition: integer;
  end;
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Edit1: TEdit;
    save: TButton;
    load: TButton;
    procedure loadClick(Sender: TObject);
    procedure saveClick(Sender: TObject);
  private
  public
    Spielstand: TSpielstand;  // Deine Daten
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.saveClick(Sender: TObject);
var
  f: file of TSpielstand;
begin
  Spielstand.Level := StrToInt(Edit1.Text);// Dies währe der aktuelle Level
  AssignFile(f, 'spielestand.dat');
  Rewrite(f);
  Write(f, Spielstand)// Daten schreiben
  CloseFile(f);
end;
 
procedure TForm1.loadClick(Sender: TObject);
var
  f: file of TSpielstand;
begin
  AssignFile(f, 'spielestand.dat');
  Reset(f);
  Read(f, Spielstand)// Daten laden
  CloseFile(f);
  Edit1.Text := IntToStr(Spielstand.Level); // Daten prüfen
end
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MTB1Leo
Beiträge: 32
Registriert: Do 20. Mär 2014, 18:00

Re: Variablenwerte in txt.-Datei speichern

Beitrag von MTB1Leo »

Vielen Dank, Mathias! 8)
750GB HDD CPU: i3 boost 3.6Ghz RAM: 12GB GPU: ASUS RADEON R7 270X DC II

Mathias
Beiträge: 6204
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: [gelöst] Variablenwerte in txt.-Datei speichern

Beitrag von Mathias »

Code: Alles auswählen

type
  TSpielstand = record
    Name: ShortString;
    Name2: String[255]; // 2. Variante
    Level, Leben, Munition: integer;
  end;

Wen noch Stringe gespeichert werden, musst du diese wie oben deklarieren.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten