![]() |
Laufendes Programm Speichern (savetofile)
Da ich nocht nicht allzu viel Programmiererfahrung habe, aber trotzdem daran sitze ein Minibrowsergame zu programmieren, bräuchte ich mal eure Hilfe
Ich brauche die korrekte Syntax für den record type und anschließend die Syntax fürs Speichern in einer Datei (zB. in C/Dokumente...) und das auslesen... Ebenfalls sollen mehrere Files abgespeichert werden können und man soll auswählen können welche man laden möchte. (Heißt man soll einen Filenamen angeben können) Hoffe ich beanspruche eure Zeit nicht zu sehr :-D |
Re: Laufendes Programm Speichern (savetofile)
Ich verstehe es so, als ob wir dir dein Game entwickeln sollen?
Mhh.. klingt zwar gut, aber keiner wirds machen :D Achja nochwas.. gewöhn' dir besser mal an den Code richtig zu schreiben .. Groß- und Kleinschreibung. |
Re: Laufendes Programm Speichern (savetofile)
Hehe so sollte das eigentlich nicht klingen.
Also ich habe ja schon ein wenig Ahnung wie ich das machen muss, habe aber das Problem, dass irgendetwas mit meiner Syntax nicht stimmt.
Delphi-Quellcode:
so, oder ähnlich hatte ich das noch von Pascal in Erinnerung.
type TTest = record
level: integer; name: string; end; type Test = TTest; Leider ist die Syntax falsch, da immer wieder ein Fehler erzeugt wird. Das ist mein Problem zur record function. Zum Speichern habe ich zum Beispiel gefunden, wie man (soweit ich den Quelltext richtig gedeutet habe) den Wert eines Editfelds speichern kann. Leider suche ich da nicht nach. Ich muss herausfinden, wie ich Variablen in einer File speichere und wieder auslesen kann. |
Re: Laufendes Programm Speichern (savetofile)
Herzlich willkommen in der DP.
Zum einen will ich sagen, das pro Thread nur ein Thema erlaubt ist. Für weitere Fragen öffne ein neues Thema. Hättest du die Suche bemüht, wärst du locker über einige Quelltexte gestolpert die deine Anliegen behandeln. Zu deinem Quelltext. TTest als Rekord ist ok. Um es aber dann zu nutzen, musst du nicht noch einen Typen festlegen, sondern eine Variable vom Typ TTest deklarieren
Delphi-Quellcode:
Dann kannst du mit
var test : TTest;
Delphi-Quellcode:
auf die einzelnen Felder zugreifen.
Test.Name := <Name>
Was ich schonmal nicht verstehe ist doch die eigentliche Unvereinbarkeit eines Browserspiels und der Programmierung dessen in Delphi. |
Re: Laufendes Programm Speichern (savetofile)
Danke für die Info, werde einen neuen Thread aufmachen !
|
Re: Laufendes Programm Speichern (savetofile)
Mhm kann mir jemand mal einen Link zu einer Dp Seite geben in der erklärt wird, wie man in eine Datei speichert?
Ich möchte eine record Speichern keinen Text aus einer Edit-Komponente. Mein Quelltext ist nach mehrmaligem Suchen und verbessern immernoch nicht Funktionsfähig. Definition des record
Delphi-Quellcode:
Variablendefinition
type TSpielstand = record
level : integer; name : string; str : integer; ausdauer: integer; konsti: integer; inti : integer; geschick: integer; quest: integer; end;
Delphi-Quellcode:
Definieren meiner Variablen (Da es eine Art Rollenspiel werden soll, sind die Variablen Attribute)
var
Form2: TForm2; spielstand: tspielstand; datei: file of tspielstand;
Delphi-Quellcode:
Natürlich ist der Quelltext voller Fehler und nichtmal vollständig (siehe: rewrite()
procedure TForm2.Button11Click(Sender: TObject);
begin spielstand.level:= erf; spielstand.str := str; spielstand.geschick := geschick; spielstand.konsti := konsti; spielstand.inti := inti; assignfile (tspielstand,'n.txt'); rewrite (); append (spielstand); write (tspielstand, Spielstand.level, Spielstand.str, Spielstand.geschick, Spielstand.konsti, Spielstand.inti); closefile (tspielstand); end; Da ich allerdings noch nicht so lange Programmiere, habe ich auch nur wenig Erfahrung mit den ganzen Funktionen von Lazarus bzw Delphi. Hoffe ihr könnt mir helfen bzw mir einen Link oder Lösungsansätze geben :) Ich versuche gerne mir aus Formeln meine Lösung zu bilden. Gruß |
Re: Laufendes Programm Speichern (savetofile)
Als erstes würde ich anstatt
Delphi-Quellcode:
das so schreiben
datei : file of TSpielstand;
Delphi-Quellcode:
Wenn du jez deinen Record abspeichern willst schreibst du die Werte(wie du es schon wolltest) in eine Textdatei.Dann steht in Zeile eins zum Beispiel das Level.
datei : textfile;
Delphi-Quellcode:
Wenn du das dann auslesen willst googlest du einfach mal nach einer funktion die eine bestimmte zeile einer textdatei ausliest, übergibst dieser Funktion deine Zeile und schreibst diese Zeile in eine Variable
assignfile(datei,'C:\...');
rewrite(f); writeln(f,spielstand.level); writeln(f,spielstand.bla); closefile(f);
Delphi-Quellcode:
Hoffe das hat jetzt weitergeholfen.
level := LeseZeileAusDatei('C:\...',1);
... := LeseZeileAusDatei('C:\...',2); ... |
Re: Laufendes Programm Speichern (savetofile)
Danke erstmal dafür, die Antwort hat mir schonmal einiges gebracht.
Jetzt weiß ich schonmal wie ich abspeichere. Dazu noch die Frage: Muss ich jedesmal wieder:
Delphi-Quellcode:
machen? Wenn ich mir das so angucke meinst du das so, dass ich einfach mehrere
assignfile (...);
rewrite(...); writeln(...); writeln(...); closefile(...); assignfiles schreibe und dann rewrite ... benutze oder? Denn sonst würde die Datei immer wieder überschrieben werden. Werde erstmal gucken ob ich hier im Dp was zu Zeile aus einer Textdatei auslesen finde Danke nochmal !:) |
Re: Laufendes Programm Speichern (savetofile)
Hi,
du musst nicht jedesmal
Delphi-Quellcode:
schreiben.
assignfile (...);
rewrite(...); writeln(...); writeln(...); closefile(...); Kurze Erklärung zu dem Code: - Assignfile verknüpft eine Variable mit einer Textdatei. In den Klammern musst du zuerst die Variable angeben, dann den Pfad der Textdatei.
Delphi-Quellcode:
- Dann musst du die Datei öffnen. Wie das hängt davon ab was du machen willst. Mit rewrite öffnest du die einfach so zum schreiben. Mit append würdest du weitere Zeichen Anfügen. Mit reset öffnest du eine Datei nur zum lesen
var
f : textfile; begin assignfile(f{Variable},C:\{Pfad der Textdatei}); end; In Klammern kommt immer die Variable. -Dann kannst du mit der Datei arbeiten: writeln schreibt eine Zeile mit von dir angegebenen Text readln liest eine Zeile aus(du kannst nicht bestimmen welche Zeile ausgelesen wird, du kannst nur von vorne beginnen)
Delphi-Quellcode:
würde eine neue Zeile erstellen in der obiges steht.
writeln(f,'Dies steht jetzt in der Textdatei');
Jetzt kannst du aber auch noch weitere Sachen machen(aber nur so , wie du die Datei geöffnet hast, wenn du datei mit reset(f) geöffnet hast, kannst du nichts schreiben) Du könntest beliebig viele writeln's bzw readln's machen, das heißt du musst nicht immer assignfile und die öffnemethode davorschreiben - zum schluss nicht vergessen die Verknüpfung mit der Variablen aufzuheben
Delphi-Quellcode:
mfg Felix
closefile(f);
|
Re: Laufendes Programm Speichern (savetofile)
Achso, danke für diese logischen Erklärungen.
So kann man dass dann immer leichter verstehen :) Habe sogar einen kleine Fehler gefunden :P Aus dem von dir gesagten ging nämlich für mich hervor, das bei deinem :
Delphi-Quellcode:
der Name der Textdatei bestimmt wird, was aber bedeutet du hast die ' vergessen ;)
writeln (f,spielstand.bla);
Bin richtig stolz auf mich, dass ich darauf gekommen bin ! Werde mich dann um eine auslesen Funktion bemühen :) Und nochmals danke Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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