![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не считывает данные из сетевого файла [D5, WinXP]
user51 © (2009-10-29 14:55:00)произвожу считываение файла из сетевого окружения
раз в секунду. Содержимое файла также меняется гдето раз в секунду.
if fileexists ('\\10.128.1.1\ping\ping.txt') then
begin
assignfile(f,'\\10.128.1.1\ping\ping.txt');
reset(f);
repeat
readln(f,ff);
until eof(f);
closefile(f);
end
проблема в том что файл реально меняется
а программа считывает все время одно и тоже похоже из какогото виндового буфера. Если я тоталом открою файл
для просмотра то и программа сразу считает новое содержимое файла. как сделать чтоб считывалось реальное содержимое файла ?
user51 (2009-10-30 12:03:00) [1]вобщем я все сделал - пару строчек добавил к коду.
А от ваших советов толку никакого - как впрочем и всегда. За всё время раза 4 спрашивал, то не знаете как сделать (в данном случае никто не знает как получить реальное содержимое файла) или вообще даете бесполезные советы которые я не могу использовать.
Интересно у кого нибудь мозгов хватит догадаться, что надо добавить или что надо изменить чтоб приведенный выше код заработал ? или к моему ОФИГЕННО БОЛЬШОМУ УДИВЛЕНИЮ я окажусь самым умным из всех кто писал в этом посту.
brother (2009-10-30 04:29:00) [2]имхо, реализация вообще никакая...
brother (2009-10-30 04:28:00) [3]> А ты не читаешь то что требуется сделать!!!
O_o это кому надо то? ты к советам прислушивайся ;)
Dennis I. Komarov (htc) (2009-10-29 22:53:00) [4]очередной x, y, z...
но тут дело не в syslog
тут, понимаешь, винад во всем виновата.
Сергей М. (2009-10-29 21:44:00) [5]
> user51 (29.10.09 17:44) [8]
> как на линуксе переправить вывод на syslog-сервер
Читай документацию.
> как сделать syslog-сервер под виндой
UDP, 514-й порт, текстовые сообщения.
user51 (2009-10-29 17:44:00) [6]просто файл уже есть и я хочу прочто его получить.
Сергей М. твой вариант можно тоже рассмотреть подскажи тогда как на линуксе переправить вывод на syslog-сервер и как сделать syslog-сервер под виндой. И действительно ли это проще чем найти комманду (точно такую же которую использует тотал ) и запускать ее перед считыванием
Сергей М. (2009-10-29 17:23:00) [7]Интересно, за каким лешим понадобилось кидать вывод консольной утилиты в файл, расшаривать его и потом на удаленном хосте пыжиться-ловить изменения в этом файле, вместо того чтобы перенаправить консольный вывод прямо на syslog-сервер на удаленном хосте ?
user51 (2009-10-29 16:33:00) [8]А ты не читаешь то что требуется сделать !!!
тотал делает что то при просмотре файла после чего виндовс
думает ага мой буфер устарел, надо обратно дать всем прогам считать из файла а не из буфра в памяти. И моя прога сразу же считывает новое правильное содержание файла.
КТО ЗНАЕТ КАК ЗАСТАВИТЬ ВИНДУ ДАВАТЬ СЧИТЫВАТЬ ДАННЫЕ ИЗ ФАЙЛА
а не из буфера ?
Anatoly Podgoretsky (2009-10-29 16:07:00) [9]Ты ответы принципиально не читаешь.
user51 (2009-10-29 15:51:00) [10]вопрос как заставить виндовс считать данные еще раз из файла на удаленном компьютере, а не из буфера в памяти того компьютера на котром запущена программа
user51 (2009-10-29 15:42:00) [11]на линуксе создал расшаренную папку в ней ping.txt котрый постоянно меняется (под линуксом программа крутиться и пингует и результат сбрасывает в файл причем первая строчка это всрем - поэтому легко поределить верно ли считыается или нет); Необходимо соединится их под ХП и пропарсить файл.
на моем компе - wmware (виртуальная машина LINUX с расшаренной папкой и файлом ping.txt) и эта прога. Все работает ОК.Считывается правильное содержимоое файла.
Беру эту прогу ставлю на комп под ХП в этой сети есть настоящий линукс с расшаренной папкой и файлом ping.txt
Считывается толко первое значение. файл реально меняется. а считывается все равно старое значение. Беру в тотале нажимаю F3 на этом файле и сразу моя прога считыват новое значение.
Anatoly Podgoretsky (2009-10-29 15:39:00) [12]
> user51 (29.10.09 14:55)
Врядли тоталом читает с помощью данных функций, попробуй считывать с помощью АПИ, тем более что код разместил в этом разделе, а код не соответствует тематике форума. Как промежуточный шаг попробуй считывать с помощью TFileStream. Но забудь про работу со строками, и АПИ и TFileStream это низкоуровневые процедуры, единица БАЙТ.
К тому же приведеный код вообще не подходит для межпрограммной работы.
ПостОвый терминатор (2009-10-29 15:28:00) [13]Каким образом узнаешь (проверяешь), что программа по таймеру считывает одну и ту же информацию?
"Сетевой" файл похоже не причем.
Для начала попробуй уменьшить частоту опроса