![]() |
|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
![]() Может попробовать читать при изменении времени последнего обращения к файлу?
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
|||
|
|||
![]() В мой txt идёт постоянная запись (ежесекундно) 24 часа, а потом создаётся новый файл и пишется обратно 24 часа и так далее.
Это лог файл оборудования , которое работает круглосуточно . |
#6
|
||||
|
||||
![]() Ну если затачиваться на то, что в файл только дописывается, но уже записанное не изменяется, то просто сохранять текущую позицию в файле и по таймеру дочитывать с этой позиции до конца файла и обновлять позицию.
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
yuoras (28.05.2015)
|