Autor Beitrag
majolo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334

Ubuntu 8.04, WinXP Prof.
D1, D6Pers, D7 Prof., D8 Prof., D2005 Pers
BeitragVerfasst: Mo 12.08.02 16:41 
Hi @ all,

habe ein Frage zu INI dateien. Ich definiere oben bei den constanten den IniPfad wie folgt im Beispiel:
ausblenden 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.
ausblenden Quelltext
1:
2:
Const
  IniFileName =  ExtractFilepath( ParamStr(0))+'Unterverzeichnis\INI.ini';

Das klappt leider nicht.
Eine Lösung????
Gruß majolo
cbs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Mo 12.08.02 21:58 
Hi
Ich mache das immer so:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334

Ubuntu 8.04, WinXP Prof.
D1, D6Pers, D7 Prof., D8 Prof., D2005 Pers
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: 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ß

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
majolo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334

Ubuntu 8.04, WinXP Prof.
D1, D6Pers, D7 Prof., D8 Prof., D2005 Pers
BeitragVerfasst: Di 13.08.02 16:03 
@Renegade: Vielen Dank. Ich werds gleich mal ausprobieren.
Gruß majolo
ugoldhan
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ausblenden 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:
ausblenden 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:
ausblenden Quelltext
1:
IniFileName := ExtractFilePath(paramstr(0)) + IniFileName;					
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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: