AGB  ·  Datenschutz  ·  Impressum  







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

typisierte Datei erstellen

Ein Thema von KahPee · begonnen am 23. Dez 2009 · letzter Beitrag vom 24. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

typisierte Datei erstellen

  Alt 23. Dez 2009, 13:50
Hallo,

ich habe ein Spiel programmiert und möchte dort jetzt eine Statistikfunktion integrieren. Dazu muss das Programm bestimmte Informationen auch noch nach dem Schließen des Programms abspeichern. Ich habe mir gedacht, dass man dazu am besten eine typisierte Datei anlegt.
Nun allerdings die Frage, wie mach ich das generell und vorallem was muss ich beachten. Ich werde in der Statistikfunktion auch wieder Datensätze auslesen müssen und vorallem bestimmte Datensätze in der Datei heraussuchen müssen.
Wäre nett wenn mir jemand da einen Tipp geben könnte.


Danach will ich auch noch das Abspeichern eines Spielstandes möglich machen. Das wäre dann das 2. Projekt. Da wäre dann die Frage wie man für jedes zuspeichernde Spiel eine eigene Datei anlegen kann. Die dann auch bei einem "gespeichertes Spiel öffnen"-Dialog wieder geöffnet werden können. Neben der einzelnden Speicherung sind hier die Dialogmöglichkeiten für das Abspeichern und wieder öffnen interessant. Aber wie gesagt, ist dieses Projekt erstmal sekundär

mfg KahPee
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 13:52
Schau dir doch mal INI-Dateien oder XML-Dateien an. Diese eigenen sich heutzutage besser und sind auch von anderen Programmen ohne Probleme lesbar.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 13:59
Aber dann muss ich doch immer ne ganze Datenbank mit mir rumschleppen. Ich habe gelesen, dass typitisierte Dateien resourcensparender sind. Außerdem ist das Spiel sehr einfach insofern sind das sowieso nicht viele Informationen!
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 14:05
Hier gibts ein Tutorial für XML, wobei ich sagen würde, dass INI-Dateien leichter zu implementieren sind und für dein kleineres Projekt wohl einfacher zu handhaben wären.

Hier habe ich sogar ein Tutorial für INI-Dateien gefunden.

Und [url=http://www.delphi-treff.de/tutorials/datenspeicherung/typisierte-dateien/]hier noch was, wenn du unbedingt typisierte Dateien verwenden will
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 14:24
Inis sehen vorallem für den ersten Teil schon mal sehr interessant aus. Trotzdem noch ein paar Fragen.

1. Wie muss ich die Dateien erstellen? Werden die beim aller ersten Aufrufen erstellt? wie ist das dann mir überschreiben etc.

2. Wenn ich jetzt bei einem Spiel zwischen Spieler 1 und Spieler 2 das Ergebnis speichern will könnte das ja so gehen:
Delphi-Quellcode:
WriteInteger('Spieler1', 'Punkte', Spieler1.points); // Spieler1.points ist die Integervariable mit dem entsprechenden Wert
WriteInteger('Spieler2', 'Punkte', Spieler2.points);
Weiter Werte zu den Spieler könnte ich dann ja theoretisch auch noch hinzufügen:
WriteInteger('Spieler1', 'Spielanzahl', anzahl);
Jetzt haben wir ein Spiel zwischen Spieler1 und Spieler3. Wie kann ich das dann berücksichtigen. Spieler 2 soll nicht überschrieben werden. Am schwersten stellt sich jetzt da, dass die Spieler nicht unbedingt in reihenfolge sind weil die im Spiel nicht Spieler 1, Spieler2, Spieler3 heißen, sondern immer den entsprechenden Spielernamen haben. WIe kann ich jetzt einen entsprechenden Datensatz raussuchen?
Das ist generell mein größtes Problem :-/. Bei einer Ini ist das recht unübersichtlich, da der komplette Datensatz zu einem Spieler nicht recordartig an einer Stelle abgespeichert ist
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 15:01
Zitat von KahPee:
wie ist das dann mir überschreiben etc.
Überschrieben wird nur das, was du beim Speichern direkt ansprichst.
INI-Dateien werden beim Speichern automatisch erzeugt, falls sie noch nicht vorhanden sein sollten.
Hier ein Beispiel für eine INI-Datei:
Code:
[Settings]
Display=1024,768
UseDirectX=0
CheatCodes=1
SplashScreen=0
ShowBlood=1
MaxFrame=25

[Players]
1=Tommy
2=Looser
3=DP

[Player_Tommy]
Point=7950
GamesPlayed=19
LastLevel=6
Checksum=EF45

[Player_Looser]
Point=350
GamesPlayed=278
LastLevel=2
Checksum=09A4
Wie du siehst ist diese Struktur viel flexibler als eine typisierte Datei.
Das einzigste Problem als Spieleprogrammierer ist, dass man die Werte leicht mit einem Editor verfälschen kann.
Wenn du ein richtig tolles Games hast, dann kannst du darüber Gedanken machen und die Werte mit eine Prüfsumme (Checksum im Beispiel) absichern.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 16:06
Wie würde ich jetzt eine Abfrage machen ob es einen bestimmten Spieler schon gibt? D.H. ich vergleiche eine Name die die Variable des Spielernamens enthält mit der Liste unter "players".

mfg KahPee
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

Re: typisierte Datei erstellen

  Alt 23. Dez 2009, 17:43
Mit der Methode .SectionExists('Player_'+spielername) kannst du prüfen, ob schon ein Abschnitt für den Spieler vorhanden ist.
Mehr über TIniFile: http://www.kuknet.de/tutorial1.pdf
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: typisierte Datei erstellen

  Alt 24. Dez 2009, 07:08
wow. Das ist nen super Tut!

Vielen Dank, damit sollte ich zumindest den ersten Teil selber hinebkommen. Eine letzte Frage habe ich aber noch:
Kann man mehrere Sections verschachteln? Um sowas zu erreichen:
Delphi-Quellcode:
[Player1]
>[Games against Player2]
Anzahl=456
>[Games against Player3]
Anzahl=123
Ich vermute fast, dass das nicht möglich ist :-/ aber wenn ich auch records in eine .ini schreiben kann würde sich das Problem ja auch lösen. Naja ich lass mich mal überraschen was für Ideen ihr habt um obiges Prob zu lösen.


mfg KahPee
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#10

Re: typisierte Datei erstellen

  Alt 24. Dez 2009, 08:06
Zitat von KahPee:
Kann man mehrere Sections verschachteln?
Nein, man könnte dieses aber notfalls im Programm "simulieren".
- jede Section bekommt ein weiteres Feld, wo dessen "Parent" drin steht und in der INI wird dann alles nur unverschachtelt gespeichert.

Dafür wäre wiederum XML geeignet.

und sowas ginge auch noch
Code:
[Player1]
Games against Player2=456
Games against Player3=123
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 10:15 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