Zitat von
Störtebeker:
Erstmal Danke für die Hinweise. Jetzt aber nochmal eine Verständnisfrage:
Ich will ja aus der INI lesen, dass heißt, sie ist bereits vorhanden. Und trotzdem das "Ini.Create"??
Naja, da es sich bei Delphi um eine Objekt orientierte Sprache handelt, gibt es Objekte, die Dinge auslagern und kapseln, damit der Programmierer nachher sich nur noch um seine Arbeit kümmern muss.
Nun wenn du "Ini : TIniFile" deklarierst, dann sagst du damit Delphi, dass hier ein Objekt ist. Normalerweise zeigt dieses Objekt aber ins nil (
not in
list, oder auch latein für "nichts"). Deshalb muss du das Objekt
erstellen.
Du kannst dir das so vorstellen, wir haben 2 GB (oder mher, je nach Betriebssystem) Knetmasse ^^, den sogenannten Arbeitsspeicher.
Und du hast eine Schablone oder Form, das sogenannte TIniFile.
Und für die Variable haben wir einen Teller.
Nun ist der Teller beim Programmstart normalerweise leer (nur abgeswaschen muss er nicht sein
).
Wenn du nun z.B. die Farbe oder die Besonderheiten wissen willst, bekommst du eine EAccessViolation ("Zugriffsverletzung"), da du nicht auf die Eigenschaften zugreifen kannst.
Deshalb erstellst du dein Objekt.
Also nimmst du dir einen Klumpen Arbeitsspeicher und stechst das aus mithilfe der Form.
Das ist das erstellen eines Objektes:
<Objektvariable> := <Objektklasse>.Create[...]
Jetzt kannst z.B. die Knete anmalen, oder verzieren.
Das heißt, ein
TIniFile.Create heißt nicht zwingend das die Datei erstellt wird, sondern, dass das Objekt erstellt wird.
Übrigens die Sache wegen der Zwei Formulare.
Da kannst du verschiedenen Ansätzen folgen, welche aber an sich ähnlich sind:
Und zwar testest du, bevor du etwas erstellst, ob die Datei existiert.
Ich hätte es jetzt im Projektcode gemacht.
Also Quelltext des Projektes öffnen, und dann sollte dort sowas stehen:
Delphi-Quellcode:
begin
Application.Initialize;
[...]
Application.Run;
end;
Dort musst du nun einsteigen:
Delphi-Quellcode:
begin
Application.Initialize;
// Alles was hier stand auskommentieren!
// Nun testen, ob die Datei vorhanden ist:
if FileExists(...) then
// Wenn die Datei existiert: Loginfenster erstellen
Application.FormCreate({Hier musst du nun Form1 o.ä. reinschreiben}, {Hier das ganze mit einem T davor})
else
// Ansonsten das Registierungsfenster erstellen
Application.FormCreate({Hier musst du nun Form1 o.ä. reinschreiben}, {Hier das ganze mit einem T davor})
Application.Run;
end;
FileExists benötigt
SysUtils, also müssen wir die unter Uses einbinden:
Übrigens könnten manche sagen, das sein nicht perfekt, aber ich denke es ist verständlichsten, was wohl eher das Problem ist.
Application.FormCreate macht übrigens was ähnliches wie du bei TIniFile machen musst:
<Erster Übergabeparamter> := <Zweiter Übergabeparameter>.Create([...]);
Diese Funktion mach aber darüberhinaus auch ein paar andere sachen
Nun sollte es funktionieren.
Aber nicht vergessen: Das, was du vorher hattest, dann löschen (oder wenn du dir nicht sicher bist: auskommentieren).
MfG
xZise
PS: Ich hoffe ich konnte helfen!