Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

чтение из "занятого" файла   Найти похожие ветки 

 
dskin   (2006-04-17 17:47) [0]

Здравствуйте.
Есть такая ситуация: Постоянно ведется log-файл. Необходимо дочитывать из него информацию, т.е алгоритм доходит до конца файла, останавливается. Через секунду(например) он смотрит с того самого места (т.е. с тем же указателем) есть дальше строчки иди нет, если да – то дочитывать. Вопрос – как читать из файла, когда он открыт для записи другой прогой и как производить дочитывание? Заранее спасибо.


 
TUser ©   (2006-04-17 18:03) [1]

Что мешает написать примерно так (в отд. потоке, разумеется)

while not Terminated do begin

while not eof (f) do begin
readln(f,s);
{do work}
end;

sleep (1000);
end;


 
n0name   (2006-04-17 19:09) [2]

Без извратов никак.
С извратами -  "3 метода работы с занятыми файлами" от Ms-Rem.


 
dskin   (2006-04-17 23:27) [3]

Уважаемый TUser, вопрос как раз и стоит в том, как реализовать строчку readln(f,s) с учетом того, что необходимый файл используется для записи другой программой (увазанный вами пример не работает). А второй вопрос - пусть я дочитал до конца файла (eof(f)), но через секунду то же место не будет концом файла, и мне необходими ДОЧИТАТЬ новые строки. С учетом того, что файл имеет очень большие значения, перечитывать его очень не рационально.
Заранее спасибо за ваш пост.


 
Elen ©   (2006-04-18 08:16) [4]

В Delphi можно использовать компонент TListBox его метод
Listbox1.Items.LoadFromFile следующим образом :

try
listbox1.items.loadfromfile
except
// ничего не делать в случае невозможности чтения
end;


Случай невозможности чтения как раз может сработать когда файл открыт другой прогой


 
balepa ©   (2006-04-18 09:35) [5]

Может CreateFileMapping


 
Slym ©   (2006-04-18 15:10) [6]

открыть файл с соответствующими опциями... FILE_SHARE_WRITE


 
Rouse_ ©   (2006-04-18 15:43) [7]


> Без извратов никак.
> С извратами -  "3 метода работы с занятыми файлами" от Ms-
> Rem.

И вот так не открывается?
   hFile := CreateFile(PChar(FDigest.Items[Index].DigestPath), GENERIC_READ,
     FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, FILE_FLAG_SEQUENTIAL_SCAN);
   if hFile <> INVALID_HANDLE_VALUE then
   try
     FileSize := GetFileSize(hFile, @FileSizeHigh);
     hMapFile := CreateFileMapping(hFile, nil, PAGE_READONLY, 0, 0, nil);


 
n0name   (2006-04-18 19:22) [8]


> И вот так не открывается?


>  для записи другой прогой

Смотря как открыт другой прогой.


 
Rouse_ ©   (2006-04-18 21:54) [9]

Покажи пример чтобы не открывался данным кодом...


 
n0name   (2006-04-19 15:16) [10]

hFile := CreateFile("C:\1.txt", GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
dwShareMode
...
If this parameter is zero and CreateFile succeeds, the object cannot be shared and cannot be opened again until the handle is closed. For more information about sharing violations, see the Remarks section.


 
Rouse_ ©   (2006-04-19 17:23) [11]

Мдя... Правильно, это StgCreateDocfile со своим STGM_SHARE_EXCLUSIVE не блокирует...


 
Yanis ©   (2006-04-19 21:56) [12]

http://www.wasm.ru/article.php?article=lockfileswork



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
2-1153892901
FBI Agent
2006-07-26 09:48
2006.08.13
Проблема с учётной записью


2-1153887740
O.O
2006-07-26 08:22
2006.08.13
Имена каталогов


3-1149842955
ANB
2006-06-09 12:49
2006.08.13
Как сделать одним оператором (oracle) ?


2-1153821432
Wolferio
2006-07-25 13:57
2006.08.13
Поиск папки по первым буквам


3-1149771742
Still Swamp
2006-06-08 17:02
2006.08.13
FB в DLL говорит "CHARACTER SET WIN1251 is not installed"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский