Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Проверка на наличие файлов   Найти похожие ветки 

 
Делфёст   (2005-11-14 16:09) [0]

Подскажите плз как проверить на существование определенного файла в определенной папке и выполнить необходимые инструкции если он есть


 
Zeqfreed ©   (2005-11-14 16:16) [1]

Делфёст   (14.11.05 16:09)
if FileExists("filename") then ;


 
Leonid Troyanovsky ©   (2005-11-14 16:18) [2]


> Делфёст   (14.11.05 16:09)  
> Подскажите плз как проверить на существование определенного
> файла в определенной папке и выполнить необходимые инструкции
> если он есть


Надо выполнять необходимые инструкции с файлом.
А если его нет, то обработать возникшее исключение (Exception).

Т.е., проверка (FileExists) - лишняя, потому как между ней и
инструкциями может пройти немало колов времени.

--
Regards, LVT.


 
Zeqfreed ©   (2005-11-14 17:07) [3]

Leonid Troyanovsky ©   (14.11.05 16:18) [2]
А если необходимо пропиликать гимн Советского Союза при нахождении некоего файла в каталоге? :)


 
Leonid Troyanovsky ©   (2005-11-14 17:32) [4]


> Zeqfreed ©   (14.11.05 17:07) [3]

> А если необходимо пропиликать гимн Советского Союза при
> нахождении некоего файла в каталоге? :)


Если оный гимн находится в искомом файле, то смело применяем [1].
А при возникшем исключении поем самостоятельно.

Хотя, конечно, в исходном вопросе инструкции не привязывались
к самому файлу. Каюсь :)

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-11-14 17:39) [5]


> Leonid Troyanovsky ©   (14.11.05 17:32) [4]


> Если оный гимн находится в искомом файле, то смело применяем
> [1].

Млин. Ну, конечно, я пытался сослаться на [2], бо [1] исключений не
вызовет. {Вот оно - воздаяние за склонность к самоцитированию,
неукоснительно ведущей к гордыне}

> к самому файлу. Каюсь :)

Каюсь.

--
Regards, LVT.


 
Zeqfreed ©   (2005-11-14 17:50) [6]

Leonid Troyanovsky ©   (14.11.05 17:39) [5]
А, ну тогда все понятно. А то [4] меня несколько запутало :)


 
Игорь Шевченко ©   (2005-11-14 17:57) [7]

Leonid Troyanovsky ©   (14.11.05 16:18) [2]


> Надо выполнять необходимые инструкции с файлом.
> А если его нет, то обработать возникшее исключение (Exception).
>


Я наверное грешен, но делаю так иногда:

AssignFile (F, "foo");
if FileExists("foo") then
 Append(F)
else
 Rewrite(F);

Как мне в этом случае последовать твоему совету ?


 
Leonid Troyanovsky ©   (2005-11-14 18:23) [8]


> Игорь Шевченко ©   (14.11.05 17:57) [7]

> > А если его нет, то обработать возникшее исключение (Exception).

> Я наверное грешен, но делаю так иногда:


TFileStream - forever.
Время текстовых файлов ушло :)

--
Regards, LVT.


 
Zeqfreed ©   (2005-11-14 18:24) [9]

Игорь Шевченко ©   (14.11.05 17:57) [7]

 AssignFile(f, "filename");
 try
  Append(f);
 except
  on E : EInOutError do begin
   if (E.ErrorCode = 2) then Rewrite(f);
  end;
 end;

?


 
Anatoly Podgoretsky ©   (2005-11-14 19:24) [10]

Игорь Шевченко ©   (14.11.05 17:57) [7]
Сложный вопрос, он может пропасть в промежутке и тогда ошибка при Append и еще хуже если он появится в этом промежутке, тогда он будет заменен пустым. Но как быть для текстовых файлов вопрос сложный, поскольку и обработка исключения не решает проблемы.


 
Игорь Шевченко ©   (2005-11-15 10:15) [11]

Leonid Troyanovsky ©   (14.11.05 18:23) [8]


> TFileStream - forever.
> Время текстовых файлов ушло :)


Мне в ряде случаев writeln привычнее. Методы работы с файлами, они же не черствеют от времени, верно ? :)

Zeqfreed ©   (14.11.05 18:24) [9]

1) Сравни, где больше строчек
2) Сравни, какой код яснее
3) Сравни, где среда будет реагировать на исключение совершенно попусту, останавливая выполнение программы.

Anatoly Podgoretsky ©   (14.11.05 19:24) [10]

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


 
GuAV ©   (2005-11-16 16:17) [12]

>Игорь Шевченко ©

TFileStream + Format, formatом можно всё, что можно writeln.

Как ещё вариант - предварительно создавать CreateFile с запретом только на удаление, после чего Append.


 
Игорь Шевченко ©   (2005-11-16 16:53) [13]

GuAV ©   (16.11.05 16:17) [12]


> TFileStream + Format, formatом можно всё, что можно writeln


И перевод строки не забывать в конце указывать, верно ?

А можно узнать, какой выигрыш будет от такой рекомендации ?
Какой ситуации она позволит избежать, например.


 
GuAV ©   (2005-11-16 20:35) [14]


> И перевод строки не забывать в конце указывать, верно ?


Разумеется, но "не забывать", а не забыть.


> А можно узнать, какой выигрыш будет от такой
>рекомендации ?
> Какой ситуации она позволит избежать, например.


[10] ?


 
Игорь Шевченко ©   (2005-11-17 10:15) [15]

GuAV ©   (16.11.05 20:35) [14]


> [10] ?



> Как ещё вариант - предварительно создавать CreateFile с
> запретом только на удаление, после чего Append


Тут такой момент - вероятность ситуации в [10] настолько мала, что городить огород из-за нее, я полагаю, не имеет смысла. Для ситуации [10] имеется другой способ - отдельный процесс, занимающийся записью в файл, постоянно захвативший этот файл, переключающий файлы для записи по определенному алгоритму (для примера - EventLog service). Вот там действительно исключена ситуация [10]



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

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.041 c
4-1128064513
nevalex
2005-09-30 11:15
2005.12.04
КАК МНЕ ОРГАНИЗОВАТЬ МНОГОПОТОЧНЫЙ ПОИСК


14-1131756453
Мазут Береговой
2005-11-12 03:47
2005.12.04
Массмедиа в основном передают ужасные новости...


2-1132047340
NFM
2005-11-15 12:35
2005.12.04
indy10


6-1124490766
Delphi_is_cool
2005-08-20 02:32
2005.12.04
Ошибка при отправке почты


14-1131899975
Alexey31
2005-11-13 19:39
2005.12.04
Как определить?