![]() |
Re: ExtractFilePath für C++
Jupp *g* Nur haben wir gelernt, man müsste Char-Arrays nutzen. Von C# & Co. kenne ich Strings, nur bin ich nicht auf die Idee gekommen, dass es auch einen im Win32-C++ gibt, da uns das, wie gesagt, so gesagt wurde.
|
Re: ExtractFilePath für C++
Vor dem selben Problem stand ich auch schon mal, irgendwie muss man in plain C/C++ das das Quadrat immer zum Rad (um nicht zu sagen das Rad neu erfinden) feilen ;)
Meine Lösung war:
Code:
std::string extractFilePath(const char* fileName)
{ std::string result(""); char filePath[MAX_PATH+1]; ZeroMemory(&filePath,MAX_PATH+1); WIN32_FIND_DATA findFileData; HANDLE hFind = FindFirstFile(fileName, &findFileData); if (hFind != INVALID_HANDLE_VALUE) { strncpy((char*)filePath,fileName,strlen(fileName) - strlen(findFileData.cFileName) - 1); result = filePath; FindClose(hFind); } return result; } |
Re: ExtractFilePath für C++
Warum einfach, wenns auch umständlich geht :mrgreen:
Außerdem ist deine Lösung hochgradig ineffizient und funktioniert nicht für den Fall, daß der gegebene Pfad eventuell gar nicht auf dem System existiert oder nicht zugreifbar ist. |
Re: ExtractFilePath für C++
Zitat:
|
Re: ExtractFilePath für C++
Zitat:
|
Re: ExtractFilePath für C++
Code:
#include <windows.h>
#include <iostream> #include <string> using std::string; int main() { char moduleName[1024]; if(!GetModuleFileName( NULL, moduleName, 1024)) { std::cout << "GetModuleHandle failed!!" << std::endl; return 0; } else { std::cout << moduleName << std::endl; } string filePath; filePath.assign(moduleName); int pos = filePath.find_last_of('\\'); filePath.erase(pos+1); std::cout << filePath << std::endl; return 0; } |
Re: ExtractFilePath für C++
Hui, das ist eine schöne Lösung, danke. :)
|
Re: ExtractFilePath für C++
Da gibt es eine API-Funktion für. Ich vergesse nur immer, wie die heißt und die DLL vergesse ich auch immer. Frag oder such mal im c-plusplus.de Forum.
![]() Oder ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz