ifstream - Dateilänge hat negativen Wert
-
Hallo
Ich benutzte Codegear RadStudio 2009
und ich benutze in meinem Programm eine Funktion zum abspeichern und einlesen einer Datei. Ich nutze dafür ifstream.Im Ersten Zeichen der Datei speichere ich die Länge meines "Headers" ab und diese Länge möchte ich dann auch wieder auslesen.
Bei bestimmten Datein bekomme ich jedoch einen negativen Wert dafür zurück, z.B. -91 , obwohl in der Datei als HEX A5 (165) steht?
int pos = 0; // reading a complete binary file ifstream::pos_type len; char* buf; ifstream file(Dateiname.c_str(), ios::in|ios::binary|ios::ate); if (file.is_open()) { len = file.tellg(); buf = new char[len]; file.seekg (0, ios::beg); file.read (buf, len); //-91 steht auch hier bereits im ersten zeichen file.close(); //des Buffers?! } else return; int iLen; char str[256]; char *pData; char* pString; iLen = (int)*buf; // NEGATIVER WERT?! ...Wenn ich 10 Dateien gespeichtert hab , habe ich 8 wo alles richtig läuft und 2 besondere bei denen ich einen Negativen Wert erhalte. Wie kann das sein?
-
Abgesehen von new fails etc., mal daran gedacht, dass char nicht unsigned sein muss?

-
beim verwenden von unsigned statt int kommt statt der -91 , 123234323423432 als Wert,
also eine unbeschreiblich größe zahlt halt.
-
Fehler, beachtet nur das erste byte
iLen = (int)*buf;Korrekt
iLen = *(int*)buf;nimmt alle 4.
-
aLeXanDer.. schrieb:
Fehler, beachtet nur das erste byte
iLen = (int)*buf;Korrekt
iLen = *(int*)buf;nimmt alle 4.
aLeXanDer.. schrieb:
Im Ersten Zeichen der Datei
Man sollte sein eigenes Format schon kennen.

-
Aus Fehlern lernt man :p
Manchmal steht man am schlauch