ExtractFilePath( Application->ExeName )
-
@C++: ...Ich kann das Problem teilweise nachvollziehen...
Bei mir(hab das schnell mal ausprobiert) zeigt er das Laufwerk und die ersten zwei ordner nur kleingeschrieben an(obwohl Großschreibung im korrekten Ordnernamen), die danach korrekt...Naja... Wer weiß, ob das jetzt eine eigenart des Builders ist... Der hat ja manchmal doch recht unterschiedliche Launen
...mysteriös...
-
@C++
Dein Problem ist mysteriös!?
Aber Du kannst mal mit WinAPI probieren:
char MFN[255];
GetModuleFileName(0,MFN,sizeof(MFN)); //holt Namen des Programms (Modul)
Label1->Caption=MFN;
(Puffer MFN muss genug Platz haben!)Sag mal, was das bringt.
[ Dieser Beitrag wurde am 05.03.2003 um 18:03 Uhr von DerAltenburger editiert. ]
-
Hast du schon versucht mit FindFirst() (und dem Grossbuchstabennamen als Maske) den echten Dateinamen zu lesen?
-
AnsiString fileName = FindFirst( ParamStr( 0 ), faAnyFile, sr );
fileName hat dann leider den Wert 0
!
-
Benutzt du Win9x? Wenn ja, hast du das Programm mal auf einem NT/2K/XP-Rechner getestet?
-
@C++, wenn alle Stricke reißen, könntest Du dein Glück auch mit GetCommandLine() versuchen. Ich verwende es gern, weil es immer geht. Das macht auch bei URLs nicht schlapp, die Fragezeichen enthalten. Das ist bei dir jetzt nicht relevant. Aber wenn ParamStr(0) bei dir aus welchen Gründen auch immer streikt... Hier (WIN98) zeigen beide Wege den String so an, wie er auch im Filemanager erscheint.
-
AnsiString fileName = FindFirst( ParamStr( 0 ), faAnyFile, sr );
Das kannst du ja wohl kaum wirklich ausprobiert haben. FindFirst liefert einen int zurück, keinen String. Der Filename steht in sr.Name.
-
Was geo eigentlich sagen wollte ist: RTFM! Die Doku ist zum lesen da also tu es. Nicht einfach nur BastelProgrammierung betreiben. (Es funktioniert... aber keiner weiss wieso)
-junix
-
Nein, es besteht (hier, WIN98) ein totaler Unterschied! Hatte bei der kurzen Verwendung von ParamStr(0) wohl nur nicht drauf geachtet. Sorry, dicker Fehler, er gemahnt mich zu wesentlich mehr Sorgfalt.
void __fastcall TEditor::FormShow(TObject *Sender) { ShowMessage(ParamStr(0)); ShowMessage(GetCommandLine()); }
Ich denke, das Ergebnis dieses simplen Versuches spricht für sich. Erhaltet ihr wirklich 2 identische Messages? Ich könnte ParamStr(0) jedenfalls nur noch für ganz spezielle Einsatzzwecke empfehlen.
-
Nur zur Info: Ich hab mal im Delphi-Code nachgeschaut. Dabei kam heraus, dass ParamStr(0) über GetModuleFileName(NULL,...) läuft.