Uj, mit der Zeile
lStream.Position := lStream.Position + sizeof(lDataSize);
hab ich ja mal richtig stark geschusselt. Klar das es da zum Fehler kommt wenn die Position nicht stimmt.
Besonders beschämend weil ich vorher noch lStartPos gesetzt habe und dann vergesse ich es in der Folgezeile zu verwenden.