![]() |
Ini Datei Frage
Hi
Ich habe eine Ini Datei erstellt und schreibe Werte in sie, wie kann ich verhindern, dass jedes mal eine neue Ini Datei erstellt wird und die Alte überschrieben?
Code:
Danke im Vorraus
ini:=TIniFile.Create('c:\highscore.ini');
try if eintrag = true then begin ini.WriteString('Highscore1', 'Name', name); ini.WriteFloat('Highscore1', 'Zeit', zeit); ini.WriteInteger('Highscore1','Punkte',punkte); eintrag := false; end; if ((ini.SectionExists('Highscore1')) and (eintrag = true)) then begin ini.WriteString('Highscore2', 'Name', name); ini.WriteFloat('Highscore2', 'Zeit', zeit); ini.WriteInteger('Highscore2','Punkte',punkte); eintrag := false; end; ... |
Lass doch vorher übreprüfen ob die Datei existiert ..
|
Ja :mrgreen:, dass ist meine Frage wie kann ich das überprüfen?
|
Schau mal in die Hilfe unter FileExists.
|
Hallo flodeluxe,
Dich verwirrt warscheinlich das .Create, zum erzeugen der Datei. Dies gilt aber bei der Ini auch zum "einfachen" öffnen der Datei, soweit vorhanden. Prüfen kannst Du es mit FileExists.
Delphi-Quellcode:
Aber in beiden Fällen musst Du .Create benutzen, ist die Datei vorhanden, wird sie einfach nur geöffnet und was rein geschrieben, wenn nicht, dann wird sie einfach neu erzeugt.
if FileExists(Meine.ini) then
begin //Datei vorhanden end else begin //Datei nicht vorhanden end; Grüsse, Daniel :hi: |
Code:
Damit steht Dein Highcore.ini in dem Verzeichnis von wo aus Du Dein Programm startest. Den auf ein Verzeichnis wie C:\highscore.ini oder so würde ich mich nicht festlegen ..
IniPath := ExtractFilePath(Application.EXEName)+'Highscore.ini'
Denkste dann auch an den ini.free ?? |
Ja, das mit dem ini.free mach ich, ich hoffe das ich das Problem noch hinbekommen... :bounce2:
Übrigens danke für den Tipp, wo dei Ini erstellt wird... |
Kein Problem :) Dafür bekomme ich ne Free Exemplar Deines Spiel ;)
|
Ja, :mrgreen: du wirst der Erste sein der es erhällt, ich will es hier im Forum unter FREEWARE posten! Vielleicht noch drei / vier Tage, mal sehen...
|
:angle2: Was wird es eigentlich ?? Ne 3D Shooter :mrgreen:
|
Ich hoffe, ich bringe jetzt nicht was durcheinander, aber mit Create auf TIniFile und gleichen Namen wird die vorhandene Datei geöffnet. Eine Suche ist nicht nötig. Wenn noch keine Datei vorhanden ist wird eine neue erstellt. Brauchst Du Voreinstellungswerte für Deine Variablen prüfen die Read-Methoden des TIniFile-Objektes (ReadString, ReadInteger....) ob der Eintrag vorhanden ist, wenn nicht wird der in der Methode angegebene Wert verwendet.
Bsp.:
Delphi-Quellcode:
Die ini wird bei reiner Namensangabe 'meine.ini' immer in das Windows-Verzeichnis gespeichert.
MyVar := ini.ReadString('Section', 'Variable', Voreinstellungswert);
Gruß oki |
Ich hab noch mal eine Frage, wie überprüfe ich ob eine Eintrag noch nicht vorhanden ist? mit NOT? Ich verzweifle noch mit den INI's :mrgreen:
|
Ganz einfach, hier mal die Beschreibung zu ReadString aus der Hilfe:
Delphi-Quellcode:
machs einfach so, wenn MyVar den Wert 'Fehler' hat, dan weißt du das was schiefgelaufen ist.
Beschreibung
ReadString liest einen String-Wert aus einer INI-Datei. Der String Section bezeichnet den Abschnitt, der den zum Wert gehörigen Schlüssel enthält. Der String Ident ist der Name des Schlüssels mit dem Wert. Der Wert Default legt fest, welcher String in folgenden Situationen zurückgeliefert werden soll: Der Abschnitt ist nicht vorhanden. Der Schlüssel existiert nicht. Dem Schlüssel ist kein Datenwert zugeordnet. Diese Version von ReadString steht nur für Anwendungen zur Verfügung, die für Windows compiliert wurden. Unter Linux wird ReadString von TMemIniFile vererbt.
Delphi-Quellcode:
MyVar := ini.ReadString('Section', 'Variable', 'Fehler');
|
janjan hats auf den Punkt gebracht.
Auch wenn man es nicht glauben mag, es gibt auch noch Dinge um die man sich nicht kümmern muß weil sie schon da sind. Gruß oki |
Zitat:
|
Hi
Ok ich werde es mal so porbieren, aber ich hasse inzwischen alle Arten von Ini's :mrgreen: :mrgreen: @ M.KNEBEL: Es wird ein kleines Spiel, wie bei der Sat1 Show, ein Superball-Clon :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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