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

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

21

28.08.2008, 23:11

Zitat von »"Unknown"«

Pfad ist im .exe Ordner, und nein, ich habe sie geschlossen und nicht schreibgeschützt.


Du hast die Datei level1.txt im Ordner, in dem auch die (Debug-) .exe ist. Aber der aktuelle Pfad ist nicht automatisch ebendieser Ordner, abhaengig davon, wie Du das .exe startest (z.B. im Debugger; aus einem Script; ...)

Fuege doch einfach mal

Quellcode

1
#include <direct.h>

ein, und zum testen direkt vor dein std::istream Input(...):

Quellcode

1
2
char tmp[512];
_getcwd( tmp, 511 );

Und dann vergleiche mal den Inhalt von tmp[] mit dem Verzeichnis, in dem Du level1.txt hast. Grundsaetzlich empfehle ich absolute Pfade. Oder die Auswertung der (Pfad-)Position des .exe's und dann das Bilden von den Pfaden.

Gruesse,
Mordrak

[size=7]PS: Ja, nach dem Verschieben von level1.txt ins korrekte Verzeichnis geht es. [/size]
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

22

29.08.2008, 14:29

Ich habe level1.txt in den Ordner kopiert, wo der SourceCode liegt, wie es mir deine Funktion sagt, aber der Fehler bleibt ?
Sprich die Werte haben immer noch oben genannte Werte

MfG Unknown

EDIT: klappt, meine Frage denoch, wie kann ich einen Pfad relatix zu exe angeben ?

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

23

29.08.2008, 15:35

Zitat von »"Unknown"«


EDIT: klappt, meine Frage denoch, wie kann ich einen Pfad relatix zu exe angeben ?


GetModuleFileName() liefert den vollen Pfad inklusive dem vollen Namen des .exe Files. Von dort ist es nicht mehr weit bis zum vollen Pfad allein :)

(argv[0] ist uebrigens nicht immer zuverlaessig, ebenso wie _pgmptr. Wobei ich mit _pgmptr eigentlich immer gute Resultate hatte. )

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

24

31.08.2008, 12:54

Der sagt mir immer GetModuleFileName() unbekannter Bezeichner ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

31.08.2008, 12:59

dann wirst du vermutlich #include <windows.h> machen müssen...

26

31.08.2008, 13:01

Aber diese Funktion braucht 3 Parameter, und da ich mich mit Windows programmierung net so gut auskenne, weiß ich net was da rein muss.

MfG unknown

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

27

31.08.2008, 13:03

Zitat von »"Unknown"«

Aber diese Funktion braucht 3 Parameter, und da ich mich mit Windows programmierung net so gut auskenne, weiß ich net was da rein muss.

MfG unknown


Nachlesen?
http://msdn.microsoft.com/en-us/library/ms683197(VS.85).aspx

28

31.08.2008, 13:07

Wenn ich das so mache:

C-/C++-Quelltext

1
2
3
4
    TCHAR szPath[MAX_PATH];
    GetModuleFileName(NULL, szPath, MAX_PATH );
    std::cout<<szPath<<std::endl;
    system("pause");

bekomme ich : 0012FD58 als ausgabe o.O

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

29

31.08.2008, 13:23

Liegt wohl am von dir eingestellten Character Set. Entweder du stellst es um, oder du verwendest std::wcout statt cout...

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

30

31.08.2008, 13:25

std::cout kann kein Unicode handhaben. Der TCHAR pointer wird dann als (hex)-Pointer ausgespuckt. Geh doch mal im Debugger durch Dein Programm und schau Dir den Wert von szPath nach dem Aufruf von GetModuleFileName() an.

Gruesse,
Mordrak

PS: Der Debugger ist Dein Freund. Immer und jederzeit.

EDIT:
PPS: Wenn Du schon TCHAR verwendest dann vielleicht auch gleich eine schoene passende Funktion, die unabhaengig von der Wahl von Unicode/ASCII funktioniert, z.B.
_tprintf( _T("%s\n"), szPath );
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

Werbeanzeige