Entwickler-Ecke

Dateizugriff - INI Datein


majolo - Mo 12.08.02 16:41
Titel: INI Datein
Hi @ all,

habe ein Frage zu INI dateien. Ich definiere oben bei den constanten den IniPfad wie folgt im Beispiel:

Quelltext
1:
2:
Const
  IniFileName = 'C:\Pfad\Unterverzeichnis\INI.ini';

Das klappt auch wunderbar. Nun wollte ich jedoch, dass der ExePfad rausgefunden wird und dann habe ich die Unterverzeichnisse dran gehängt.

Quelltext
1:
2:
Const
  IniFileName =  ExtractFilepath( ParamStr(0))+'Unterverzeichnis\INI.ini';

Das klappt leider nicht.
Eine Lösung????
Gruß majolo


cbs - Mo 12.08.02 16:58

Tag auch

da mustse dir dann halt zb. ne globale variable deklarieren und dann im onshow oder oncreate event des formulars mit daten füllen

den code dazu haste je schon selbst geschrieben.

ich würds so machen, wenn es ne bessere lösung gibt nur her damit, würd mich auch stark interessieren


patmann2001 - Mo 12.08.02 21:58

Hi
Ich mache das immer so:

Quelltext
1:
2:
3:
4:
procedure TForm1.FormCreate(Sender: TObject);
  begin
    dateipfad:=extractfilepath(application.ExeName);
  end;

dateipfad ist dabei eine Globale Variable.

cu Patmann


majolo - Mo 12.08.02 22:20

Ja, ich weiß, dass man es so auch machen kann. Ich will aber wissen ob so etwas auch oben bei den Constanten realisieren.Trotzdem Danke.
Gibts noch andere Lösungen.
majolo


Renegade - Di 13.08.02 11:17

Moin erstmal!

Also mit einer globalen Variable würde ich das nicht realisieren (irgendwie unschön) - ich benutze dafür immer Funktionen oder Proceduren.

@Majolo: Wenn ich das richtig sehe mußt du nur statt einer Const eine Var deklarieren. Dann sollte es funzen.

Gruß


majolo - Di 13.08.02 16:03

@Renegade: Vielen Dank. Ich werds gleich mal ausprobieren.
Gruß majolo


ugoldhan - So 20.10.02 17:29
Titel: ExtractFileName funktioniert nicht mit Application.Exename
Hi,
genau an dieser Stelle bin ich gescheitert. ExtractFilePath ist o.k., Application.ExeName kennt Delphi nicht- oder wird dafür jetzt eine weitere Unit benötigt? (Bin von Delphi 2 auf Delphi 6 umgestiegen.)
Es gibt da noch den Tip mit ParamStr(0), jedoch interessiert mich das trotzdem.
Gruss uwe


Delete - So 20.10.02 18:41

"Application.ExeName" ist IMHO nur die VCL-Kapselung von "paramstr(0)". Wenn du mal eine Konsolenanwendung ohne Form schreibst, wirst du da nicht drumherum kommen ... :wink: ... und das es auch innerhalb der VCL funktioniert, spricht nichts gegen die Verwendung.
"Application.ExeName" sollte eigentlich bekannt sein. Kontrolliere deine Eingabe mal auf Schreibfehler. Was anderes fällt mir dazu nicht ein; oder schau mal, ob du die Form "Forms" benutzt. Wenn nicht, dann wäre das ein Beispiel für ein "Non-VCL"-Programm, um´s mal so zu nennen ...

@Renegade: Gegen globale Variablen ist eigentlich nichts einzuwenden. Manchmal sind sie sogar nützlich. Als Beispiel würde ich da die bekannten Icons in der "taskbar notification area" (TNA) nennen.
Dadurch, dass du die entsprechende "TNotifyIconData"-Variable global deklarierst, kannst du die meisten Eigenschaften von ihr bereits füllen, und der Code verkürzt sich auf die "Shell_NotifyIcon"-Anweisung.

@majolo:
Auch der Weg

Quelltext
1:
2:
var
  IniFileName : ExtractFilepath(...);

wird nicht funktionieren, weil du damit schon eine Funktion von Delphi aufrufst. Es wird dir nichts weiter übrig bleiben, als die Variable z.B. so zu deklarieren:

Quelltext
1:
2:
var
  IniFileName : 'Unterverzeichnis\INI.ini';

und dann z.B. wie patman vorgeschlagen hat im "OnCreate"-Ereignis der Form den restlichen Pfad davorzusetzen:

Quelltext
1:
IniFileName := ExtractFilePath(paramstr(0)) + IniFileName;                    


Delete - Mo 21.10.02 02:02

Konstanten heißen nicht umsonst Konstanten und Variablen nicht umsonst Variablen. :roll:

Aber wie oft wollt ihr das noch druchsprechen? Es gibt ein Tutorial und die Suchfunktion liefert 17 Treffer für das Stichwort "Ini-Datei". :shock: