Ob es nun unelegant ist oder nicht, habe ich mal alles andere an Zeigern und PChar und ...
außer acht gelassen, um nochmal direkt auf den 1. Beitrag zurückzukommen.
Delphi-Quellcode:
function GetFileStrFromEnd(FileName: String; Count: Integer): String;
var
FS: TFileStream;
I:integer;
begin
FS:=tfilestream.Create(FileName, fmOpenReadWrite or fmShareExclusive);
try
I:=FS.Seek(0, soFromEnd);
FS.Seek(I-Count,soFromBeginning);
Setlength(Result,Count); // nicht vergessen, sonst Zugriffsverletzung
FS.Read(Result[1],Count); // [1] nicht vergessen, sonst Zugriffsverletzung
finally
fs.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( GetFileStrFromEnd('C:\background.exe', 4) );
end;
So läuft das ganze bei mir ohne Probleme.
MfG,
Hanno