Jak odczytać plik u?żywany przez inny program ??

0

Wiec tak tworze program który ma czytać ostatnią linię z pliku tekstowego, z odczytaniem ostatniej linii nie miałem problemu (czyt. poszukałem na google) tylko że nie mogę nigdzie znaleźć jak odczytywać tą ostatnia linie gdy inny program cały czas dopisuje nowa ostatnia linie do tego pliku.
Czyli pytanie jest takie jak odczytać plik tekstowy w delphi gdy jest on uzupełniany nonstop przez inny program.

P.S. kopiowanie odpada

A kawalek jak <ort>odczytóje </ort>ten plik:

begin
SourceLines := TStringList.Create;
try
try
SourceLines.LoadFromFile(Source);
LastLine := SourceLines[SourceLines.Count - 1];

Pozdrawiam.
Dziękuje za pomoc.

0

To jest troche bez sensu. Jesli chodzi ci o dostep do pliku to:

Stream := TFileStream.Create(LogFileName, fmShareDenyNone);
JakisStringList.LoadFromStream(Stream);

//To jest wlasnie odpowiedz, zrob tak jak tu... robisz jakies statsy tak? tez ostatnio sie tym zajmuje i wiem, ze jak zrobisz tak jak wyzesz to bedzie dobrze. Choc nie wiem jak w innych grach, ale np w quake3 log jest zapisywany po zakonczeniu gry/rozgrywki, wiec ostatnia linijka nie jest rozwiazaniem, poza tym lepiej uzyc TextFile - jest szybszy niz StringList.

0

Heh napisze inaczej .... wiec tak <ort>chcĘ </ort>zrobic program ktory bedzie obrabial loga z gry czyli wyciagal nonstop ostatnia linie z loga <ort>ktoory </ort>jest caly czas otwarty przez gre i caly czas jest tam dopisywanan ostatnia linia i jak nie jest odpalona gra to jest git czyta ostatnia linie i wszystko dziala lecz jezeli uruchomie gre to <ort>Od razu </ort><ort>pokazoje </ort>sie ze plik nie moze byc odczytany ....

Załączam źródełko tego co odczytóje ostatnia linie :

procedure TForm1.CopyLastLine(const Source, Dest: TFileName; const DefaultText:
string);
var
   SourceLines, DestLines : TStrings;
   LastLine: string;
   ostatnia: string;
begin
SourceLines := TStringList.Create;
   try
     try       
       SourceLines.LoadFromStream(Stream);
       LastLine := SourceLines[SourceLines.Count - 1];
     except
       // handle unreadable files
       on EFOpenError do LastLine := DefaultText;
       // handle empty files
       on EStringListError do LastLine := DefaultText;
     end;
   finally
     SourceLines.Free;
   end;
   try
   Memo1.lines.add(LastLine);

   finally
     
   end;
end;

no a <ort>wywołóje </ort>sie to takim czymś :P

CopyLastLine('D:\MOHAA\main\qconsole.log', '', 'Cold, 0');

Przerobilem to troszke bo we wczesniejszej wersji zapisywalo wynik do innego pliku lecz etraz jest to niepotrzebne.

Dzieki za odpowiedz :)

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