den path des ordners selbst herausfinden?
-
moin wie kann man den path des ordners herausfinden?ich erinner mich noch an sowas getdirectory:: dann weiß ich nicht mehr weiter.ich brauche das weil ich die paths von den picturebox's angeben muss.
geht das iwie so:
(form1 background)
this->BackgroundImage = gcnew Bitmap(GetDirectory:: ...) ?
-
Was genau ist denn bitte "der Ordner" in dem Fall?
-
Das aktuelle Arbeitsverzeichnis gibts durch "Directory::GetCurrentDirectory()".
Oder welchen Ordner willst du ?
-
DarkShadow44 schrieb:
Das aktuelle Arbeitsverzeichnis gibts durch "Directory::GetCurrentDirectory()".
Allgemein würde ich eher davon abraten Dateien aus dem "current directory" (oder relativ zu diesem Verzeichnis) zu laden, da man nie weiß, was das "current directory" sein wird. Es hängt völlig davon ab, wie der Benutzer das Programm aufgerufen hat. Und kann sich auch zur Laufzeit jederzeit ändern...
Falls Du etwas aus dem "Installationsverzeichnis" deines Programms (oder relativ zu diesem Verzeichnis) würde ich empfehlen, den Pfad der EXE-Datei zu bestimmen:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspxIf this parameter is NULL, GetModuleFileName retrieves the path of the executable file of the current process.
-
Da würde ich den .NET Weg einschlagen:
http://stackoverflow.com/questions/1222190/what-is-the-best-way-to-get-the-executing-exes-path-in-net
http://stackoverflow.com/questions/837488/how-can-i-get-the-applications-path-in-a-net-console-application
-
ich brauche einen befehl("getpath")der den path des projektordners(spiel1) herausfindet und dann sie bei (form1)this->BackgroundImage = gcnew Bitmap("getpath"/bild1); einsetzt.
-
etl schrieb:
ich brauche einen befehl("getpath")der den path des projektordners(spiel1) herausfindet
Und was genau passt an unseren Vorschlägen nicht ?
-
Und dieser Ordner, "spiel1", was ist das bzw. wo ist der überhaupt?
Ist das das "Installationsverzeichnis" Deiner Anwendung (also das Verzeichnis, wo sich deine Progamm-Datei (EXE File) befindet) bzw. ein Unterordner dessen?
-
DeathCubeUK schrieb:
Und dieser Ordner, "spiel1", was ist das bzw. wo ist der überhaupt?
Ist das das "Installationsverzeichnis" Deiner Anwendung (also das Verzeichnis, wo sich deine Progamm-Datei (EXE File) befindet) bzw. ein Unterordner dessen?
Falls ja, siehe:
* https://www.c-plusplus.net/forum/p2434339#2434339
* https://www.c-plusplus.net/forum/p2434346#2434346
-
es sind bilder im projektordner und deren path soll herausgefunden werden
-
Woher soll die Anwendung (EXE) wissen, wo der Projektordner (für die Kompilation) gewesen ist? Du mußt die entsprechenden Dateien in den Ausgabeordner kopieren bzw. kopieren lassen (CopyToOutputDirectory = CopyAlways oder CopyIfNewer).
-
was ist ein ausgabeordner bzw. wo ist es?
-
Letzten Endes wirst Du ja das "fertige" Programm, also die EXE-Datei (plus evtl. zugehörige DLL's), an den Kunden/Benutzer ausliefern!
Dann spielt aber der "Projektordner" überhaupt keine Rolle mehr, sondern viel eher das Verzeichnis, wo die EXE-Datei auf dem Rechner des Kunden/Benutzer liegt - das "Installationsverzeichnis".
Alle weiteren Daten, die zu Deinem Programm gehören, sollten zusammen mit deiner EXE-Datei in der das "Installationsverzeichnis" (oder einen Unter-Ordner davon) installiert werden.
(Wie Du zur Laufzeit das Verzeichnis ermitteln kannst, wo sich Deine EXE-Datei befindet, wurde ja schon x-mal erklärt...)
-
wie könnte ich es einsetzen?und ich benutze c++ cli, kein "reines" c++
-
etl schrieb:
wie könnte ich es einsetzen?und ich benutze c++ cli, kein "reines" c++
C++/CLI ist eine Erweiterung von C++, so wie C++ im Wesentliche eine Erweiterung von C ist.
Daher "funktioniert" in C++/CLI alles, was in "reinem" C++ funktioniert, ebenfalls - bloß gilt das nicht in die Umgekehrte Richtung, weil in "reinem" C++ all die
.NET
-spezifischen Dinge fehlen.So, eine Möglichkeit, wie man zur Laufzeit das Verzeichnis herausfinden kann, wo sich Deine EXE-Datei befindet hatte ich ja schon erwähnt:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspxDas kann dann, zum Beispiel, wie folgt aussehen:
#include <Windows.h> using namespace System; System::String^ getInstallPath(void) { wchar_t fileName[1024]; const DWORD ret = GetModuleFileNameW(NULL, fileName, 1024); if((ret > 0) && (ret < 1024)) { //Replace forward-slashes with back-slashes while(wchar_t *const slash = wcschr(fileName, L'/')) { *slash = L'\\'; } //Cut off the file part from module path if(wchar_t *const lastDelimiter = wcsrchr(fileName, L'\\')) { *lastDelimiter = L'\0'; } return gcnew System::String(fileName); } return nullptr; } int main(array<System::String ^> ^args) { System::String ^installPath = getInstallPath(); if(installPath != nullptr) { Console::WriteLine(L"My installation directory is:"); Console::WriteLine(installPath); } else { Console::WriteLine(L"Something went wrong :-("); } return 0; }