odczyt ostatnich kilkunastu znakow z pliku exe problem

0

Witam, dodaje do pliku exe (koniec pliku) ... klika znaków tekstu.. proboje wczytać caly ten tekst za pomocą takiego kodu :

 
Var
  TF : TextFile;
  S : String;
Begin
  AssignFile(TF, application.ExeName);
  Reset(TF);
  While Not Eof(TF) Do
  Begin
    Readln(TF, S);
    memo1.Lines.Add(S);
  End;
  CloseFile(TF);

niestety zamiast na koncu w memo1 wyswietlac tekst ktory dodalem wczesniej czyli przykladowo "mama ma kota"

wyswietla krzaki...

jak to poprawic żeby wysweitalo normalnie ten tekst ?

0

Musisz znać długość tego tekstu.

  1. Otworzyć plik (ale nie jako TextFile) - wystarczy do odczytu.
  2. Przesunąć wskaźnik pliku na pozycję (długość_pliku_exe - długość_tekstu) za pomocą Seek.
  3. Odczytać końcówkę pliku od tej pozycji za pomocą BlockRead i skopiować do Memo.
  4. Zamknąć plik.
0

oki dzieki za pomoc :)

0

robię tak ...

 

Var
  plik : File;
  data : String;
  size:integer;
Begin
  FileMode:=fmOpenRead;
  AssignFile(plik, application.ExeName);
  Reset(plik);
  Size := FileSize(plik);
  Seek(plik, size - 10);
  BlockRead(plik,data,10);
  memo1.Text:=data;
  CloseFile(plik);
end;

mam problem z BlockRead, program mi sie wiesza...cos jest nie tak z BlockRead .

0
Var
  plik : File;
  data : String;
  size:integer;
  ile_bajtow:Integer;
Begin
  ile_bajtow:=10;//musi uwzględniać ew. znaki końca wiersza
  SetLength(data,ile_bajtow);
  FileMode:=fmOpenRead;
  AssignFile(plik, application.ExeName);
  Reset(plik,1);
  Size := FileSize(plik);
  Seek(plik, size - ile_bajtow);
  BlockRead(plik,data[1],ile_bajtow);
  CloseFile(plik);  
  memo1.Text:=data;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1