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

Вниз

Анализ текстового файла   Найти похожие ветки 

 
SS   (2005-07-14 17:43) [0]

Помогите с такой проблемой:
Пытаюсь програмно анализировать лог файл который ведеться другой программой отправляющей письма. Не получаеться открыть этот файл для чтения (так как он постоянно открыт на запись програмой отправки). В любой программе типа File Manager для просмотра он открываеться. А в Delphi выдаеть ошибку.
При использовании {$I-} ... {$I+} и FileMode := 0; он показывает что он пустой ( efo() = true).
IOResult показывает 32 ошибку.


 
Fay ©   (2005-07-14 17:52) [1]

CreateFile() не катит ?


 
ANB ©   (2005-07-14 17:53) [2]

С флагами надо поработать . . . Смотреть в сторону FileOpen + fmShareDenyNone.


 
SS   (2005-07-14 17:56) [3]

Файл постоянно открыт программой отправки.
я пытаюсь:

{$I-}
AssignFile(Mail_log,Path_1+"ac_log");
FileMode := 0;
Reset(Mail_log);
while not eof(Mail_log) do
begin
...
end;
CloseFile(Mail_log);
{$I+}
или другие варианты - но ничего не получаеться ...


 
Fay ©   (2005-07-14 17:58) [4]

2 ANB ©   (14.07.05 17:53) [2]
>> fmShareDenyNone
Блин, ещё одно волшебство. Неужели все под линух пишут?!


 
SS   (2005-07-14 18:02) [5]

Fay
нет. Вспоминаю молодость пишу консольное приложение для планировщика задач, на анализ лог файла почты. :-)


 
Просто Джо ©   (2005-07-14 18:11) [6]

Суммирую вышесказанное. Если файл открыт не эксклюзивно, то открыть его для чтения в твоей программе можно так (если пользоваться FileOpen или аналогичными функциями):

 Handle1 := FileOpen("d:\testfile",fmOpenRead or fmShareDenyNone);
 // пробуем прочитать в заранее подготовленный буфер
 if not ReadFile (Handle1,Buff,Len,BytesRead,nil) then
   RaiseLastOSError;
 FileClose (Handle1);


 
Fay ©   (2005-07-14 18:21) [7]

2 Просто Джо ©   (14.07.05 18:11) [6]
>> Если файл открыт не эксклюзивно
А если FILE_SHARE_WRITE ?

>> Суммирую вышесказанное
А кто проверит результат FileOpen?

P.S.
Всё. Повыёживался, теперь можно поспать 8)


 
Просто Джо ©   (2005-07-14 18:28) [8]


>  [7] Fay ©   (14.07.05 18:21)
> 2 Просто Джо ©   (14.07.05 18:11) [6]
> >> Если файл открыт не эксклюзивно
> А если FILE_SHARE_WRITE ?

Если файл был открыт с FILE_SHARE_WRITE, то код в [6] спокойно откроет файл на чтение.


> А кто проверит результат FileOpen?

Это пример, показывающий суть. Главно выделено жирным. Результат ReadFile проверяется.
ггггг....

> Всё. Повыёживался, теперь можно поспать 8)

Спи спокойно, дорогой друг... :0)


 
Fay ©   (2005-07-14 18:32) [9]

2 Просто Джо ©   (14.07.05 18:28) [8]
>> Если файл был открыт с FILE_SHARE_WRITE, то
>> код в [6] спокойно откроет файл на чтение.

А мне почему-то кажется, что слабо ему будет.


 
Просто Джо ©   (2005-07-14 18:38) [10]


> [9] Fay ©   (14.07.05 18:32)
> А мне почему-то кажется, что слабо ему будет.


FILE_SHARE_WRITE -
Enables subsequent open operations on the object to request write access. Otherwise, other processes cannot open the object if they request write access.
Код в [6] где-то пытается открыть файл с доступом на запись?


 
Fay ©   (2005-07-14 18:47) [11]

2 Просто Джо ©   (14.07.05 18:38) [10]
Ты чё-то не врубился немножко. (Или я уже сплю?)
Если я открою файл
CreateFile(... , FILE_SHARE_WRITE, ...)
то ты не откроешь его на чтение.


 
Просто Джо ©   (2005-07-14 18:53) [12]


>  [11] Fay ©   (14.07.05 18:47)

Это я "не врубился". Ты прав.


 
Fay ©   (2005-07-14 18:55) [13]

2 Просто Джо ©   (14.07.05 18:53) [12]
Спасибо! Успокоил. Я уже начал думать, что брежу и это неочевидно только мне 8)


 
ANB ©   (2005-07-14 21:33) [14]


> Fay ©   (14.07.05 17:58) [4]
- какой линух, в хелпе даже помечено, что это платформозависимый флаг, т.е. только виндовый. Просто FileOpen - делфовая обертка над апишной функцией и ее легче юзать.


 
ANB ©   (2005-07-14 21:35) [15]

Упс. Извиняюсь, платформонезависимый. Но код для линуха другой. Хотя на FileOpen все равно делфа ругается - типа под линухом компилять не буду. И не надо.



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

Форум: "Основная";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.046 c
3-1118918229
DelphiN!
2005-06-16 14:37
2005.07.31
SQL отнимающий содержимое одной строки от другой


11-1103720327
ECM
2004-12-22 15:58
2005.07.31
FAQ от Gandalf-a (KOL.MASTAK.RU)


3-1118917400
ivc_andr
2005-06-16 14:23
2005.07.31
Узнать текст запроса и Host


3-1119553881
chi
2005-06-23 23:11
2005.07.31
Что понимается под свойством Handle для таблицы Paradox?


1-1121322454
zamik
2005-07-14 10:27
2005.07.31
Опять вопрос по QReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский