![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Написал программу для анализа файла txt, в файл постоянно пишется инфа другой программой.
Мне постоянно приходится в ручную обновлять файл для последующего анализа. Как то можно сделать как в FAR ? Вот кусок процедуры Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Fs : TFileStream;
Od : TOpenDialog;
begin
combobox1.Enabled:=true;
button3.Enabled:=true;
Combobox2.Enabled:=true;
button4.Enabled:=true;
Od := OpenDialog1;
if Od.InitialDir = '' then
Od.InitialDir := ExtractFilePath( ParamStr(0) );
if not Od.Execute then Exit;
if not FileExists(Od.FileName) then begin
MessageBox(0, 'Ôàéë ñ çàäàííûì èìåíåì íå íàéäåí. Äåéñòâèå îòìåíåíî.'
,'Îòìåíà!', MB_OK + MB_ICONWARNING + MB_APPLMODAL);
Exit;
end;
Fs := TFileStream.Create(Od.FileName, fmOpenRead + fmShareDenyNone);
try
Memo1.Lines.LoadFromStream(Fs);
Caption := '' + ExtractFilename(opendialog1.FileName);
StatusBar1.Visible := True;
StatusBar1.Panels[0].Text := OpenDialog1.FileName;
statusbar1.Panels[1].Text:= 'Ñòðîê:'+IntToStr(Memo1.Lines.Count);
finally
FreeAndNil(Fs);
end;
end; |
|
#2
|
|||
|
|||
|
можно просто перечитывать файл по таймеру. можно использовать спец. компоненты (не помню точно название, с Д7 есть в Samples, что-то там с Notify), там будет "подниматься" эвент при изменении отслеживаемого файла (можно просто через API сделать тоже самое, но через компоненты просто удобнее).
|
|
#3
|
|||
|
|||
|
Да, тоже нужно мне как раз.
Я подумал про таймер. Но постоянно перечитывать файл в 50 Mb , это не правильно. Вот бы дочитывать , что не хватает в уже открытом. |
|
#4
|
||||
|
||||
|
Может попробовать читать при изменении времени последнего обращения к файлу?
|
|
#5
|
|||
|
|||
|
В мой txt идёт постоянная запись (ежесекундно) 24 часа, а потом создаётся новый файл и пишется обратно 24 часа и так далее.
Это лог файл оборудования , которое работает круглосуточно . |
|
#6
|
||||
|
||||
|
Ну если затачиваться на то, что в файл только дописывается, но уже записанное не изменяется, то просто сохранять текущую позицию в файле и по таймеру дочитывать с этой позиции до конца файла и обновлять позицию.
|
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
yuoras (28.05.2015)
| ||