Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

C++: Pfade aus Textdaei auslesen

Yves3 / 6 Antworten / Flachansicht Nickles

hallo

ich möchte die pfade für meine texturen aus einer textdaei auslesen.

wenn ich das so mache, funktioniert es:

fgets(Test,25,pDatei); // bei 24 zeichen langem pfad

D3DXLoadSurfaceFromFile(VecTileSurface[0], 0,0,Test,0,D3DX_DEFAULT,0,0);

dummerweise ist der pfad nicht immer gleich lang und wenn ich fogendes schreibe funktioniert es nicht:

fgets(Test,100,pDatei);

hab es auch schon mit tricks probiert:

fgets(Test,100,pDatei);
strncpy(Buffer,Text,sizeof(Text));

D3DXLoadSurfaceFromFile(VecTileSurface[0], 0,0,Buffer,0,D3DX_DEFAULT,0,0);

hat leider auch nicht funktioniert :-(
komischerweise wird der pfad immer richtig dargestellt, wenn ich ihn mit einer messagebox ausgebe.

ach ja meine textdatei:

4
1
3 3 3 3 3 3 3 3
1 1 0 0 0 0 1 2
1 1 0 2 0 0 1 2
1 3 0 0 3 0 1 2
0 1 0 0 0 0 1 2
1 1 0 1 0 0 1 2
..\\\\media\\\\tile_gras.png
..\\\\media\\\\tile_sand.png
..\\\\media\\\\tile_asphalt.png
..\\\\media\\\\tile_fels.png

bin jetzt volle 2 tage an diesem sch**** problem und bin langsam aber sicher am verzweifeln.

für antworten bin ich sehr dankbar!

bei Antwort benachrichtigen
IDE-ATAPI Yves3 „C++: Pfade aus Textdaei auslesen“
Optionen

Könnte an den Stringbegrenzungen liegen.
Jeder String sollte begrenzt werden, normalerweise mit ASCII 0x00.

Beim hineinschreiben der Pfade setzt du am Ende des Strings das 0x00,
beim Einlesen solltest du folgendes machen:


unsigned char ucByte;
CString cstrEinzulesenderPfad;

while(fgetc(DeinFile, ucByte) != 0x00)
{
cstrEinzulesenderPfad += ucByte;
}
cstrEinzulesenderPfad += 0x00;

Du liest also Byte für Byte die Zeichen ein, bis das Ende des Strings
erreicht ist (am 0x00 erkennbar) und kopierst das Byte in den String.


Gruß
IDE-ATAPI

bei Antwort benachrichtigen