ExtractFilePath( Application->ExeName )



  • Leider gibt Application->ExeName den Pfad NUR als GROßbuchstaben zurück. Ich möchte ihn aber normal: Statt C:\EIGENE DATEIEN also C:\Eigene Dateien

    Wie mach ich das? LowerCase geht hier ja nicht, da würde ja wieder alles klein sein 😞



  • Original erstellt von <c++>:
    Leider gibt Application->ExeName den Pfad NUR als GROßbuchstaben zurück.

    Bei mir nicht (BCB6/WinXP). Aber probier's mal mit ParamStr(0).



  • @Jansen

    Dazu gab's im C++ Forum unter 'Dateipfad ermitteln' eine heisse Diskusion!!! 😃

    Mit ParamStr(0) ziehste Dir den Zorn der "C++ Experten" zu! 😃

    Ich machs wie Du und das geht (DOS / WIN / WIN2K ...) 😉

    [ Dieser Beitrag wurde am 04.03.2003 um 22:03 Uhr von DerAltenburger editiert. ]



  • Original erstellt von DerAltenburger:
    Mit ParamStr(0) ziehste Dir den Zorn der "C++ Experten" zu! 😃

    why?

    -junix



  • @Junix

    Haste den Beitrag in C++- Forum nicht gelesen?

    Da waren sich die Experten nicht einig, was im 0. Parameter steht! 😃
    (Was das OS in argv[0] 'reintun tut. 😉

    PS: Ich stimm ja dem Jansen zu (aus praktischer Erfahrung)

    [ Dieser Beitrag wurde am 05.03.2003 um 13:58 Uhr von DerAltenburger editiert. ]



  • Original erstellt von DerAltenburger:
    Haste den Beitrag in C++- Forum nicht gelesen?

    nein

    Original erstellt von DerAltenburger:
    (Was das OS in argv[0] 'reintun tut. 😉

    wir reden aber von ParamStr() und nicht von argv. LIes mal in der Hilfe wa szum Thema ParamStr() da genau steht (-;

    -junix



  • sorry, aber ihr redet irgendwie an mir vorbei.

    das ganze funktioniert schon, ich bekomme auch den korrekte Pfad, nur sieht es nicht gut aus, wenn zum Beispiel oben dann im Programmkopf statt C:\Programmpfad\Dateien\test.TXT folgendes steht: C:\PROGRAMMPFAD\DATEIEN\TEST.TXT ... was muss ich ändern, damit alles so angezeigt wie es auch wirklich ist, denn es heißt nunmal nicht "PROGRAMMPFAD" sondern "Programmpfad"

    HILFE.

    Tipp: Lasst euch mittels MessageDlg mal ExtractFilePath( ParamStr( 0 ) ) ausgeben, das ganze wird in großbuchstaben wie eben im problem bei mir erscheinen - leider!



  • @Junix

    Dann informiere Dich mal, wo ParamStr(0) im BCB und argv[0] in C / C++
    ihren Inhalt her haben (DARUM ging's, aber Du kannst wohl nicht lesen?)

    Der Inhalt kommt vielleicht vom OS? 😃



  • @C++

    Dein Problem kann ich nicht nachvollziehen:

    Bei mir kommt die Angabe so, wie Ordner heisen (Originalschreibweise!) 😕 😕 😕

    Hab' den BCB 4.0!



  • Ist mir wurscht wo er bei ParamStr(0) die daten her holt.

    In meiner Hilfe steht dazu:

    ParamStr(0) returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE)

    Ich vermute auch, dass ParamStr() nicht einfach auch argv zurückgreift sondern das irgendwie anderweitig auswertet. Aber das ist spekulation...

    -junix



  • Bei mir GEHTS HALT NICHT mit der richtigen Schreiweise. Die Frage war auch von grund auf so ausgelegt, dass ich einfach nur gern die Lösung hätte. Da ExtractFilePath ja nicht geht, fällt das weg. Bitte, bitte diskutiert über mein Problem und nicht über Sekundäres bezüglich dieses Themas.



  • Hast du beim explorer irgendwo ein häckchen gesetzt dass er die Ordnerangaben irgendwie umformatieren soll? (alles klein, alles gross, erster buchstabe gross, oder so?) Erstell mal nen neuen ordner mit bewusster Gross/Kleinschreibung und kopier deine Anwendung aus...

    -junix



  • @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


Anmelden zum Antworten