Autor |
Beitrag |
Terra23
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Di 12.03.13 23:51
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
_________________ Hasta La Victoria Siempre
|
|
Jann1k
Beiträge: 866
Erhaltene Danke: 43
Win 7
TurboDelphi, Visual Studio 2010
|
Verfasst: 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
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Terra23
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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; |
_________________ Hasta La Victoria Siempre
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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 ....
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 13.03.13 17:59
Das ganze habe ich schon einmal hier gekapselt:
www.delphi-forum.de/viewtopic.php?t=92348
Wenn du das so nicht direkt benutzen möchtest, findest du aber auf jeden Fall Material zum Anschauen.
|
|
Terra23
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: 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?
_________________ Hasta La Victoria Siempre
|
|
WasWeißDennIch
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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:
www.entwickler-ecke....ewtopic.php?p=580893
Bei kleineren Projekten funktionierte das gut, auch wenn ich es eigentlich noch einmal richtig machen und überarbeiten müsste...
|
|