Wie wäre es denn mit mitdenken? Warum schreibt er wohl den Namen inkl. Laufwerksbuchstaben ...?
Delphi-Quellcode:
sLen:=Length(ExtractFileName(Fname)); // << ExtractFileName hier
Strm1.Write(sLen, sizeof(sLen));
Strm1.Write(Fname[1], sLen); // << ... aber hier net ...
Vorschlag: Fname := ExtractFileName(Fname);