AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Highscore erstellen, speicher, laden

Ein Thema von bl4ckb1rd · begonnen am 16. Feb 2009 · letzter Beitrag vom 7. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#1

Highscore erstellen, speicher, laden

  Alt 16. Feb 2009, 17:37
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
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#2

Re: Highscore erstellen, speicher, laden

  Alt 17. Feb 2009, 00:54
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.
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Highscore erstellen, speicher, laden

  Alt 17. Feb 2009, 07:37
TStringList
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#4

Re: Highscore erstellen, speicher, laden

  Alt 5. Mär 2009, 21:26
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
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Highscore erstellen, speicher, laden

  Alt 5. Mär 2009, 21:32
Du hast statt var ein const über den variablen
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#6

Re: Highscore erstellen, speicher, laden

  Alt 5. Mär 2009, 21:43
du hast recht^^

danke auch!!!
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#7

Re: Highscore erstellen, speicher, laden

  Alt 6. Mär 2009, 13:30
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.
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#8

Re: Highscore erstellen, speicher, laden

  Alt 6. Mär 2009, 16:02
Keiner weiss warum der link vom OpenDialog nicht gespeicher wird?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Highscore erstellen, speicher, laden

  Alt 6. Mär 2009, 16:09
Wo ist pfad deklariert?
Beim Schliessen sicherst du aber Edit1.Text. Und wenn du da nicht eingegeben hast geht es so natürlich nicht
Markus Kinzler
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#10

Re: Highscore erstellen, speicher, laden

  Alt 6. Mär 2009, 16:23
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 Uhr.
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