Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 12.03.13 23:51 
Hi Leute!

Ich versuche, beim Programmstart zwei Userdaten aus einer INI zu lesen.

Mein Code:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mi 13.03.13 00:41 
Also quasi so...?!?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
If Not FileExists(...) Then
Begin 
/// Aufforderung über Inputboxen
/// Versuch, in INI zu schreiben
End Else
Begin
/// Versuch, INI zu lesen
/// Werte aus INI übernehmen
End;

_________________
Hasta La Victoria Siempre
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Do 14.03.13 09:07 
user profile iconTerra23 hat folgendes geschrieben Zum zitierten Posting springen:
@Topic: Können wir also festhalten, dass EXCEPT nicht durchlaufen wird, wenn eine Datei nicht existent ist?

Exakt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 14.03.13 09:28 
user profile iconTerra23 hat folgendes geschrieben Zum zitierten Posting springen:
@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...