Autor Beitrag
tortom1000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Mi 11.02.09 19:05 
Hallo,
ich habe folgendes Problem:
In einer Ini-Datei befindet sich der Name der Datenbank in der Form 192.168.0.1:c:\programme\meinprogramm\datenbank.fdb.
Wenn ich die Ini-Datei bei OnCreate der Form einlesen möchte, bleiben die Variablen trotz korrekter Zuweisung undefiniert. Daher kann ich den DatabaseName im OnCreate der Form nicht zuweisen.
Im OnShow der Form funktioniert das Einlesen aus der Ini-Datei, aber das ist zu spät, da dann das Programm bereit abgestürzt ist ohne die erforderliche Datenbank.
Weiß hierzu jemand Rat?
Das Auslesen aus der Ini-Datei mache ich, damit ich bezüglich des Rechnernamens bzw. seiner IP und des Datenbankpfades variabel bin.

Gruß Tortom

Moderiert von user profile iconNarses: Beitragsformatierung überarbeitet.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 11.02.09 19:23 
Bei mir geht das auch im OnCreate...
Zeig uns, wie du das machst, und wir sagen dir, was falsch ist.

_________________
PROGRAMMER: A device for converting coffee into software.
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Mi 11.02.09 22:47 
Hallo Xentar,
grundsätzlich geht die Zuweisung bei mir auch, wenn ich einen festen Wert zuweise.
Da ich den Wert aber aus der Ini-Datei auslesen muß bzw. möchte, damit ich bei dem
Datenbankpfad variabel bin, funktioniert es mit dem auslesen aus der Ini-Datei
im Oncreate nicht.
Die von mir verwendete Prozedur zum auslesen sieht folgendermaßen aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure INI_einlesen;
var ini: TIniFile;
begin
  ini:=TIniFile.Create(progdir + 'datenbank.ini');
  try
    databasename:=ini.ReadString('DATENBANK','Datenbankname','undefiniert');
   finally
    ini.free;
  end;
end;

Die Prozedure funktioniert z.B. im OnShow-Ereignis einwandfrei, nur halt nicht
im OnCreate.
Keine Ahnung, was das falsch ist

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 11.02.09 22:50 
1. Kann es sein, dass progdir zu dem Zeitpunkt noch nicht definiert ist?
2. und wo wird databasename weiterverwendet? Den musst du ja irgendwo der Komponente zuweisen..
3. Hast mal nen Haltepunkt gesetzt, ob überhaupt der richtige Wert in databasename drinsteht?
4. Delphi Tags hier im Forum verwenden

Zeig mal mehr code..

_________________
PROGRAMMER: A device for converting coffee into software.
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
BeitragVerfasst: Mi 11.02.09 23:44 
Hallo tortom1000,

ich benutze dafür ein DataModul. Zu beachten ist, dass es als erstes aufgerufen wird.

z.B.:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
begin
  Application.Initialize;
  Application.Title := 'MEIN PROGRAMM';
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TfrmSPSDAPHauptMenue, frmSPSDAPHauptMenue);

 usw.


Bis bald Chemiker
tortom1000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 175

Win XP, Win Server 2003 - 2012, Win 7
Delphi 7
BeitragVerfasst: Do 12.02.09 08:31 
Schande über mein Haupt. Ich Depp hatte progdir tatsächlich
erst im OnShow definiert.
Dann kann das auch nicht gehen.
Ich hab das nun geändert und es funktioniert auf Anhieb.
Vielen Dank für deine/eure Hilfe.
Tortom