Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Highscore erstellen, speicher, laden (https://www.delphipraxis.net/129297-highscore-erstellen-speicher-laden.html)

bl4ckb1rd 16. Feb 2009 17:37


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

ferby 17. Feb 2009 00:54

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.

nuclearping 17. Feb 2009 07:37

Re: Highscore erstellen, speicher, laden
 
TStringList

bl4ckb1rd 5. Mär 2009 21:26

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

Satty67 5. Mär 2009 21:32

Re: Highscore erstellen, speicher, laden
 
Du hast statt var ein const über den variablen

bl4ckb1rd 5. Mär 2009 21:43

Re: Highscore erstellen, speicher, laden
 
du hast recht^^

danke auch!!!

bl4ckb1rd 6. Mär 2009 13:30

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:
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;
Text speichern:
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.

bl4ckb1rd 6. Mär 2009 16:02

Re: Highscore erstellen, speicher, laden
 
Keiner weiss warum der link vom OpenDialog nicht gespeicher wird?

mkinzler 6. Mär 2009 16:09

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

bl4ckb1rd 6. Mär 2009 16:23

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:51 Uhr.
Seite 1 von 2  1 2      

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