den path des ordners selbst herausfinden?



  • 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).aspx

    Das 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;
    }
    

Anmelden zum Antworten