Entwickler-Ecke
Dateizugriff - Ini wird nicht erzeugt ... Fehler bei Except???
Terra23 - Di 12.03.13 23:51
Titel: Ini wird nicht erzeugt ... Fehler bei Except???
Hi Leute!
Ich versuche, beim Programmstart zwei Userdaten aus einer INI zu lesen.
Mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| Try Try Ini := TIniFile.Create(IniName); Spielername := Ini.ReadString('Userdaten', 'Spielername', 'Hans Maulwurf'); Spielercossy := Ini.ReadString('Userdaten', 'Cossy', '1234567890'); Except Spielername := InputBox('Spielernamen eingeben...', 'Name:', ''); Spielercossy := InputBox('Cossy eingeben...', 'Cossy:', '');
Ini.WriteString('Userdaten', 'Spielername', Spielername); Ini.WriteString('Userdaten', 'Cossy', Spielercossy); End; Finally Ini.Free; End; |
Was soll der Code tun? Er soll zwei Strings auslesen und in "Spielername" und "Spielercossy" speichern (beides String-Variablen). Wenn die Datei nicht existiert, soll er dem User nacheinander zwei Input-Fenster anzeigen, wo er seine Daten eintragen kann und dann die Daten sichern.
Komischerweise wird dieser Except-Teil aber nicht ausgeführt. Die INI-Datei existiert nicht, daher müsste aber Except doch ausgeführt werden, oder?
Gruß,
Terra
Jann1k - Di 12.03.13 23:59
Wenn ich das richtig im Kopf habe, wird durch TIniFile.create die Inifile erzeugt, falls sie nicht existiert.
bummi - Mi 13.03.13 00:32
wie Jann1k feststellte wird der except - Fall nur eintreten wenn die INI nicht erstellt werden kann (Ordner nicht vorhanden/keine Schreibrechte) in diesem fall wird auch Deine Except Routine fehlschlagen.
Das heißt IMHO dass Du zwei Fehlerbehandlungsroutinen benötigst.
- Datei kann nicht erstellt oder gelesen werden
-Datei ist nicht vorhanden oder Defaultwerte = gelesene Werte (Sollten IMHO dann aber leer sein)
eigentlich kommt och eine dritte Fehlerquelle hinzu, INI kann gelesen werden aber wegen fehlender Schreibrechte nicht mehr geschrieben werden.
Terra23 - Mi 13.03.13 00:41
Also quasi so...?!?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| If Not FileExists(...) Then Begin End Else Begin End; |
bummi - Mi 13.03.13 00:52
Hängt von der Absicht ab, wenn Du sinnvolle Vorgabewerte hast die Du im Zweifelsfalle übernehmen willst läge das Hauptaugenmerk darauf ob die INI geschrieben werden kann oder gegf. eine INI datei aus eine anderen Ordner zu verwenden wäre.
Aber da wird es dann eh komplizierter (Default.ini im ProgrammeOrdner vs. User.ini im Userfolder), was genau wie umzusetzen ist kannst letztlich nur Du entscheiden ....
Terra23 - Do 14.03.13 00:12
@jaenicke: Danke, werd mir das mal anschauen. Sieht auf den ersten Blick sehr einschüchternd und kompliziert aus.
@Topic: Können wir also festhalten, dass EXCEPT nicht durchlaufen wird, wenn eine Datei nicht existent ist?
WasWeißDennIch - Do 14.03.13 09:07
Terra23 hat folgendes geschrieben : |
@Topic: Können wir also festhalten, dass EXCEPT nicht durchlaufen wird, wenn eine Datei nicht existent ist? |
Exakt.
jaenicke - Do 14.03.13 09:28
Terra23 hat folgendes geschrieben : |
@jaenicke: Danke, werd mir das mal anschauen. Sieht auf den ersten Blick sehr einschüchternd und kompliziert aus. |
Sollte es aber nicht sein. Zumindest die Einbindung, der Quelltext mag nicht so einfach sein. ;-)
Du kannst ja (nach einer Sicherung des Projektes natürlich) das automatische Tool ausprobieren:
http://www.entwickler-ecke.de/viewtopic.php?p=580893
Bei kleineren Projekten funktionierte das gut, auch wenn ich es eigentlich noch einmal richtig machen und überarbeiten müsste...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!