![]() |
Highscore erstellen, speicher, laden
Ich hab lange gesucht aber leider nix passendes gefunden.
Ich habe die variable Score als Integer und möchte diese nun in einem Text-Dokument score.txt abspeichern. Ausserdem möchte ich das jede Zeile der Datei in ein array highscore[1..5] gespeichert werden soll. Im Netz habe ich verschiedene Sachen gefunden doch alle verwenden eine Memobox und so Kram den ich gar nicht brauche. In C++ geht sowas sehr einfach. Man kann jede Zeile auslesen und in einen String speichern. Man kann der Datei washinzufügen oder einfach überschreiben. Eine Memobox, Klasse und so wird gar nicht gebraucht. Gibt es sowas ähnliches und unkompliziertes in Delphi? Bsp:
Delphi-Quellcode:
openfiletoread('score.txt');
do while (Ende der Datei erreicht wurde) { score[i]:=line(i); i:= i+1; } close file; openfiletowrite('score.txt'); if file nicht gefunden dann soll 'score.txt' neu erstellt werden lineaddtofile := newscore; close file; So stell ich es mir vor ;) in C++ sieht es so ähnlich aus, aber hab keine Ahnung wie es in Delphi aussieht o.O |
Re: Highscore erstellen, speicher, laden
Hello,
wenn ich das richtig verstanden habe brauchst du ca. so etwas:
Delphi-Quellcode:
uses
SysUtils; var MyFile: TextFile; i: Integer; score: array [1..5] of integer; temp: String; begin // <-- ZUM LESEN --> // Öffne Datei assignfile(MyFile, 'score.txt'); reset(MyFile); i:=0; // Lese Datei aus und speicher alles in inhalt while not EOF(MyFile) do begin readln(MyFile, temp); score[i] := StrToInt(temp); inc(i); end; closefile(MyFile); // <-- ZUM SCHREIBEN --> temp:=''; for i := 0 to length(score) do temp:=temp + inttostr(score[i]) + #10; // Speichern assignfile(MyFile,'score2.txt'); if not fileexists('score2.txt') then rewrite(MyFile) else append(MyFile); write(MyFile, temp); closefile(MyFile); end. |
Re: Highscore erstellen, speicher, laden
TStringList
|
Re: Highscore erstellen, speicher, laden
So größten danke genau das was ich brauche!!
Nur wenn ich jetzt alle compiliere, kommt bei mir folgende Fehlermeldung bei dieser Zeile: MyFile: TextFile; Meldung: [DCC Fehler] Unit1.pas(32): E2029 '=' erwartet, aber ';' gefunden |
Re: Highscore erstellen, speicher, laden
Du hast statt var ein const über den variablen
|
Re: Highscore erstellen, speicher, laden
du hast recht^^
danke auch!!! |
Re: Highscore erstellen, speicher, laden
Ok wieder ein Problem mit dem Speichern ;(
Gespeichert wird diesmal nur das, was in einem Edit feld sich befindent. Gebe ich jetzt über die Tastatur 'asdf' ein, so wird es gespeichert und bei Programm neustart wieder geladen. Wenn ich jetzt über OpenDialog, einen ganzen Pfad in das Edit-Feld übergebe, wird diese komischerweise gar nicht gespeichert o.O So sieht die betroffene Stelle in Delphi aus (Ich benutze Delphi 2009 falls es eine Rolle spielt): Text auslesen und ausgeben:
Delphi-Quellcode:
Text speichern:
procedure TForm1.FormCreate(Sender: TObject);
var MyFile: TextFile; temp: String; begin opendialog1.filter:='Programme|*.exe'; assignfile(MyFile, 'pfad.txt'); if not fileexists('pfad.txt') then rewrite(MyFile); reset(MyFile); readln(MyFile, temp); edit1.text := temp; closefile(MyFile); end;
Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var MyFile: TextFile; temp: String; begin temp:=edit1.text; assignfile(MyFile,'pfad.txt'); rewrite(MyFile); append(MyFile); write(MyFile, temp); closefile(MyFile); end; OpenDialog Pfad auslesen und zwischen speicher:
Delphi-Quellcode:
procedure TForm1.AdvGlowButton1Click(Sender: TObject);
begin edit1.Text := ''; opendialog1.execute; edit1.Text := opendialog1.filename; pfad := opendialog1.FileName; end; Wie schon gesagt, gebe ich per Hand was ein wie ASDFblablabal speichert er alles, wähle ich über OpenDialog einen Pfad, wird diese nicht gespeichert. |
Re: Highscore erstellen, speicher, laden
Keiner weiss warum der link vom OpenDialog nicht gespeicher wird?
|
Re: Highscore erstellen, speicher, laden
Wo ist pfad deklariert?
Beim Schliessen sicherst du aber Edit1.Text. Und wenn du da nicht eingegeben hast geht es so natürlich nicht |
Re: Highscore erstellen, speicher, laden
Da ist was angegeben.
und zwar: edit1.text := opendialog1.filename; wenn ich per hand was eintipp, wird es gespeichert, wird was über opendialog in edit1.text was eingefügt, wird es nicht gespeichert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz