Dateipfad auslesen und Datei kopieren



  • Hey

    Mein Ziel ist es den Dateipfad auszulesen und die besagte Datei zu kopieren!

    Das mit dem Auslesen habe ich bereits geschafft:

    char FilePath[MAX_PATH];
    GetModuleFilenameA(NULL,FilePath,MAX_PATH);
    

    Allerdings akzeptiert die Funktion "CopyFile" meine Variable FilePath nicht,
    zumahl Filepath 1x "\" ausgibt und CopyFile 2x "\"...

    Nun wollte ich mal fragen, ob es eine Alternative zu CopyFile bzw. GetModuelFilenameA gibt?



  • Für char-Strings ist die Funktion CopyFileA vorgesehen, analog zu GetModuleFilenameA.
    Es ist aber heute nicht mehr sinnvoll, ANSI-Strings zu verwenden, zumal Dateinamen auch Unicode-Zeichen enthalten können.
    CopyFile erwartet einen TCHAR-String:

    TCHAR FilePath[MAX_PATH]; 
    GetModuleFileName(NULL,FilePath,MAX_PATH);
    CopyFile(FilePath, ...);
    

    Das dann am besten mit UNICODE compilieren.



  • Danke erst mal für deine Antwort!

    Kann mir jemand sagen, was ein LPCWSTR ist??

    Denn wenn ich meinen Zielpfad bei CopyFile angebe...ist das immer als CHAR-Container, und das scheint falsch zu sein :|

    TCHAR FilePath[MAX_PATH];
    GetModuleFileName(NULL,FilePath,MAX_PATH);
    CopyFile(FilePath, "c:\\Users\\julian\\...", false);
    

  • Mod

    LPCWSTR == const wchar_t *

    Wide Strings sind Unicode Strings!
    - W steht also für Unicode, (ein darstellbares zeichen hat als wchar_t 16bit)
    - bei MBCS steht kien besonderer Buchstabe oder A, (ein Darstellbares zeichen hat als char 8bit)
    - T steht für Compilerabhänige Typisierung, bei Unicode wird wchar_t genommen, ansonsten char.



  • CopyFile(FilePath, _T("c:\\Users\\julian\\..."), false);
    

    Zur Definition von String-Literalen:

    "c:\\Users\\julian\\..."  // => ANSI, 8 Bit Zeichen
      L"c:\\Users\\julian\\..."  // => UNICODE, 16 Bit Zeichen
    _T("c:\\Users\\julian\\...") // TCHAR, je nach Compiler-Einstellung ANSI oder UNICODE
    

Anmelden zum Antworten