003
23.02.2003, 19:39 Uhr
Volle
|
Hi Flo,
ich habe dich noch nicht ganz verstanden, glaube ich.
Grundsätzlich aber, machst du Folgendes...
Du holst dir die Adresse des CString- Speichers und schreibst sie in eine neue Variable. Die übergibst du dann an die die Read- Funktion. Spätestens ab hier, wird keine Überprüfung auf INT_MAX mehr stattfinden (aber vermutlich auch nicht, wenn du den Umweg über den zweiten char* nicht machst...).
Wenn du jetzt hergehst, und direkt diesen Buffer wieder zum Schreiben weitergibst, dann funktioniert das (zufällig?). Aber du kannst halt mit einem CString nicht mehr als INT_MAX- Zeichen verarbeiten. In den Puffer hast du aber mehr geschrieben. Ich weiß nicht, wie dieses Verhalten definiert ist (?). Aber auf jeden Fall würde ich hier vorsichtig sein.
Warum teilst du nicht auf? Ich würde von vorne herein feste "Paketgrößen" einlesen. Du musst halt den Fall implementieren, wenn die gelesene Paketgröße nicht mit der geforderten übereinstimmt. Dann bist du aber in jedem Fall auf der sicheren Seite. Schließlich musst du ja davon ausgehen, dass es u.U. öfter mal größere Files gibt, oder?
Das fällt mir dazu ein...
Grüße, Volle. Dieser Post wurde am 23.02.2003 um 19:41 Uhr von Volle editiert. |