Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

26.05.2011, 18:40

Also wenn du einfach "NeuerOrdner\" schreibst, sollte der Ordner in dem Ordner erstellt werden, in dem das Programm liegt!

Nein, dann wird er in dem Ordner erstellt, in dem das Programm ausgeführt wird. Wenn man es im Explorere per Doppelklick startet, stimmen beide überein, aber alleine wenn man es in VC zum Debuggen startet, ist es in der Standardprojekteinstellung schon nicht das Verzeichnis der exe.
Ich hatte ganz früher mal das Problem, dass ein Windows Standardöffnen Dialog mir während das Programm lief den Ausführungspfad verändert hat, weswegen auf einmal Dateien an andere Stellen geschrieben wurden und nicht geladen werden konnten, weil sie an falscher Stelle gesucht wurden.

Daran sieht man, dass man es zumindest im Hinterkopf haben sollte, dass Anwendungspfad und Pfad der exe nicht viel miteinander zutun haben müssen.
Lieber dumm fragen, als dumm bleiben!

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

22

26.05.2011, 20:09

Nein, dann wird er in dem Ordner erstellt, in dem das Programm ausgeführt wird. Wenn man es im Explorere per Doppelklick startet, stimmen beide überein, aber alleine wenn man es in VC zum Debuggen startet, ist es in der Standardprojekteinstellung schon nicht das Verzeichnis der exe.
Ich hatte ganz früher mal das Problem, dass ein Windows Standardöffnen Dialog mir während das Programm lief den Ausführungspfad verändert hat, weswegen auf einmal Dateien an andere Stellen geschrieben wurden und nicht geladen werden konnten, weil sie an falscher Stelle gesucht wurden.

Daran sieht man, dass man es zumindest im Hinterkopf haben sollte, dass Anwendungspfad und Pfad der exe nicht viel miteinander zutun haben müssen.

Ich meine auch den Fall, wenn man die .exe direkt ancklickt! Standardmäßig ist dieser Pfad meines Wissens nach auch der Pfad wo die .exe liegt. In VisualStudio gilt dieser eigestellte (andere) Pfad auch nur, wenn man das Programm aus VisualStudio heraus startet!
Dass ein Programm aber während es läuft den Standardpfad ändert, ohne dass eine spezielle Funktion aufgerufen wird (wenn es denn eine gibt), kommt mir sehr unwarscheinlich vor. War das nicht eher ein Fehler? :huh:

Mfg Harry222

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

23

26.05.2011, 20:19

Es gibt die SetCurrentDirectory() Funktion ;)

Aber die Datei öffnen/speichern Dialog in Windows XP hat in der Tat das aktuelle Arbeitsverzeichnis geändert. Das Problam hatte ich letztens erst auf der Arbeit... find so einen Fehler mal, wenn du unter Windows 7 entwickelst, wo dieses Verhalten nicht auftritt >.<

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

24

26.05.2011, 20:22

Aber die Datei öffnen/speichern Dialog in Windows XP hat in der Tat das aktuelle Arbeitsverzeichnis geändert.

Ich hatte, als ich noch XP hatte, nie diese Dialoge benutzt! Deswegen wusste ich das auch nicht! ;)
Ist aber schon ein krasser Fehler... 8|

Mfg Harry222

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

25

26.05.2011, 20:29

Fehler würd ich das nicht nennen. Eher undokumentiertes Verhalten.
Das machen die Dialog unter Vista und 7 wahrscheinlich auch noch. Nur sie ändern ihn dann hinterher wieder auf den ursprünglichen Wert ;)

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

26

26.05.2011, 20:31

Fehler würd ich das nicht nennen. Eher undokumentiertes Verhalten.

Wie man es nimmt... ;)
Da es nicht dokumentiert ist, nenne ich es einen Fehler!

Mfg Harry222

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

27

27.05.2011, 21:57

klappt danke noch ma für alles

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

28

29.05.2011, 22:44

Schau dir mal an wofür das TEXT() Makro is. Warum castest du da wenn du nichtmal weißt was das is!? Kleiner Tip: Es löscht den Ordner nicht weil der Pfad den du ihm übergibst Müll ist, Rückgabewerte checken ist immer sehr aufschlussreich wenn was nicht funktioniert...

29

30.05.2011, 17:31

Es muss heißen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <iostream>#include <Windows.h>

using namespace std;

int main ()
{
    CreateDirectory (TEXT ("Update\\"), NULL);
    RemoveDirectory (TEXT("Update\\"));
    return 0; }


Gruß

Harry222

Alter Hase

Beiträge: 864

Beruf: Student

  • Private Nachricht senden

30

30.05.2011, 17:37

Nochmal zur sicherheit ein Beispiel ( ;) ):

C-/C++-Quelltext

1
2
3
4
5
6
int main()
{
    CreateDirectory(LPCWSTR("NeuerOrdner\\"), 0); // 1.
    CreateDirectory(TEXT("NeuerOrdner\\"), 0); // 2.
    return 0;
}


Bei 1. heißt der Ordner "敎敵佲摲敮屲", beim 2. heißt er "NeuerOrdner".
Du hast also einen Ordner erstellt, der einen anderen Namen hatte, als der, den du löschen wolltest!

Mfg Harry222

Werbeanzeige