Das einzige, das ich mir vorstellen kann ist, dass beim Lesen was schiefgeht.
Delphi-Quellcode:
for i:= 0 to High(Map.MapPlan) do
begin
Stream.Read(TexID,SizeOf(Cardinal));
if TexID = 0 then ShowMessage(IntToStr(i)); // BAAM Es wird ne 0 gelesen o.O
...
end;
Wenn TexID uninitialisiert ist, steht meisstens 0 drinnenstehn.
Es kann gut sein, dass du was in den Stream reinschreibst, und es dann gleich wieder auslesen willst - ohne die Position auf 0 zu setzen. D.h. er steht am Ende des Streams, damit liest er 0 Bytes aus dem Stream, schreibt 0 Bytes in die Variable TexID rein und es bleibt die 0 darin uebrig.
Deswegen wuerde ich auch generell immer mitzaehlen, wieviele Bytes in den Stream geschrieben und gelesen wurden. Die Anzahl der gelesenen/gerschrieben Bytes steht uebrigens im Ergebnis von Read und Write.
greetz
Mike
PS: Ein Blick in die Datei zeigt eigentlich immer die Problemstelle auf, und erspart uns Spekulationen ueber evt. Fehlerursachen