![]() |
neue ini einträge werden nicht gespeichert
Hallo, ich bin fast am verzweifeln, weil es eigentlich eine einfache sache ist, aber es will einfach nicht klappen
An einem bestimmten Teil des programmes, werden die ini informationen ausgelesen und können geändert werden. Aber ab da wo die Einträge in der Ini quasi geupdatet werden sollen, speichert er einfach nicht die neuen daten
Delphi-Quellcode:
Keiner der Writevorgänge funktioniert.
if fileexists(ExtractFilePath(ParamStr(0))+ 'db.plt') then
begin ini2:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ 'db.plt'); try ini2.WriteInteger(playername, 'points', StrToInt(Edit1.Text)); //Neue Punkte schreiben ini2.WriteString(playername, 'editdate', DateToStr(date)); // Editierdatum schreiben ini2.WriteInteger(playername, 'puffer', newpuffer); //Puffer schreiben //ini.WriteInteger(playername, 'penalty', penalty); // Strafpunkt setzen (folgt später) ini2.UpdateFile; finally ini2.free; end; end; Am einem anderen teil im programm wiederum funktioniert es reibunglos
Delphi-Quellcode:
Ich finde einfach den Fehler nicht
if fileexists(ExtractFilePath(ParamStr(0))+ 'db.plt') then
begin ini:=TIniFile.Create(ExtractFilePath(ParamStr(0))+ 'db.plt'); try ini.WriteInteger(playername, 'points', StrToInt(playerpoints)); ini.WriteString(playername, 'adddate', DateToStr(date)); ini.WriteInteger(playername, 'puffer', puffer_calc); ini.WriteInteger(playername, 'penalty', 0); ini.WriteString(playername, 'edit', ''); finally ini.free; end; end; |
Re: neue ini einträge werden nicht gespeichert
Steht in Edit1.Text auch ein Intefger drin?
Besser TryStrToInt(), StrToIntDef() nehmen |
Re: neue ini einträge werden nicht gespeichert
Hi,
vielleicht stört ja auch das UpdateFile... Ab NT werden die Daten ja nicht mehr gepuffert. Braucht man wohl noch unter Linux... Frank |
Re: neue ini einträge werden nicht gespeichert
Zitat:
|
Re: neue ini einträge werden nicht gespeichert
Ich tippe eher darauf, daß das Ganze unter Vista und Windows 7 läuft und der Dateivirtualisierer zuschlägt.
Delphi-Quellcode:
Wenn man dann die geänderten INI-Einträge im Programmverzeichnis sucht, wird man nur die unveränderte INI-Datei finden.
ExtractFilePath(ParamStr(0))+ 'db.plt'
|
Re: neue ini einträge werden nicht gespeichert
Hallo,
glaube ich nicht Zitat:
Lösche die Ini mal und lasse sie durch den nicht funktionierenden Code anlegen. Vorher darf der funktionierende Teil aber nicht aufgerufen werden ! Falls es tatsächlich Vista oder Win7 ist, les dir mal was zu "Ini nichts ins Programm-Verzeichnis" durch. Das wurde hier schon so oft durchgekaut. Und noch was: Warum schreibst du den Code doppelt ? Don't repeat yourself (DRY). Jetzt hast du 2 Stellen "Ini-Schreiben", die sich nur durch die Werte unterscheiden. Mache genau eine Methode mit Parametern draus, dann kannst schön einen Breakpoint setzen, und u.a. ausschließen, dass die Code-Stück 2 nicht aus Versehen noch mal aufrufst und dabei deine anderen Werte wieder überschreibst. Es bietete sich z.B. an, Darum / Uhrzeit (incl.Sekunden) mit in die Ini zu schreiben. Heiko |
Re: neue ini einträge werden nicht gespeichert
Danke für die vielen Antworten, kam leider jetzt erst zum lesen.
Zitat:
Zitat:
Zitat:
Zitat:
------------------- Zitat:
Zitat:
Zitat:
Edit: Selbst wenn ich das Programm auserhalb der Entwicklungsumgebung als Administrator starte, passiert scheinbar nichts Edi2: Jetzt hab ich das ganze in den Eigene Dateien ordner gemacht (die ini) trotzdem wird nichts geändert |
Re: neue ini einträge werden nicht gespeichert
Ich würde Folgendes tun: zuerst einmal eine Konstante deklarieren, damit Du garantiert überall denselben Dateinamen verwendest. Dann nicht im eigenen Programmverzeichnis speichern, das kann u.U. zur Virtualisierung führen wie schon angesprochen. Das Schreiben dann in eine eigene Methode auslagern und zum Schluss noch kontrollieren, ob "playername" in beiden Fällen befüllt ist.
|
Re: neue ini einträge werden nicht gespeichert
Hallo Sektalas,
untersuche doch einfach, ob die Routine überhaupt aufgerufen wird. Dazu setzt Du entweder einen Breakpoint, oder (wenn Du mit dem Debugger nicht firm bist) Du baust testweise ein ShowMessage ein. blauweiss |
Re: neue ini einträge werden nicht gespeichert
Hallo,
Zitat:
Der Code unterscheidet sich kaum voneinander. Also in eine eigenständige Methode packen, und die Ini-Werte als Parameter übergeben. Dann reicht genau ein Breakpoint, um das zu debuggen. Dass ExtractFileXXX nur einmal im Programmcode erscheinen soll, wurde ja bereits gesagt. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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