Ich habe da so meine Bedenken wegen
Unicode. Erstmal scheint alles zu stimmen (wenn der Text
Ansi ist). Die ersten 4 Byte enthalten die Zahl 8. Dann folgen 8 Zeichen und dann folgen wieder 4 Byte und in denen steht auch die Länge des Rests.
Könntest du vielleicht die JPG noch mit hochladen?
[edit]Nachdem das Bild hochgeladen ist: Er scheint 8 Bytes zu früh anfangen zu schreiben. Deshalb überleben nur 4 Zeichen von deinem Satz. Und dann setzte noch ein drauf
und setzt dann nach 4 Byte von JPG noch deine 4 Byte für die Länge.[/edit]
[edit]In dieser Zeile
lStream.Position := lStream.Position + sizeof(lDataSize);
hauts in aus den Socken! Das zweite
lStream.Position
muss
lStartPos
sein! Weil die Position ist nach dem setzen der Länge des Textes 4 (weil er 4 Bytes am Anfang der Datei geschrieben hat). Dann addierst du noch die Länge von der Größe dazu (auch 4 Byte). Stattdessen musst du aber am Ende der Datei springen und dann noch 4 Byte weiter (um Platz für die Größe zu lassen).
Übrigens könnte man da auch zwei Methoden daraus machen:
Delphi-Quellcode:
function WriteStream(Source, Dest : TStream; Offset : Integer) : Integer;
var
lDataSize : Cardinal;
begin
Dest.Position := Offset + SizeOf(lDataSize);
Dest.CopyFrom(Source);
Result := Dest.Position;
Dest.Position := Offset;
lDataSize := Sourc....;
Dest.Write(lDataSize, SizeOf(lDataSize));
end;
[/edit]
MfG
Fabian
PS: Von JFIF scheint es nur das IF überlebt zu haben?!