Delphi (работа с файлами)

avvokado

Вопрос лёгохонький:
Вот у меня есть папка, а в ней какие-то файлы валяются, хз скока и хз под каким названием, запто известно какого типа. Вот как мне так открыть их всех по очереди, ну или хотя бы как найти первый попавшийся файл в папке и узнать его имя?

avvokado

спасибо

dimabel

Мммм....
Кусок кода с указанной страницы:
   IsFound :=
FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0;
while IsFound do begin
FilesList.Add(StartDir + SR.Name);
IsFound := FindNext(SR) = 0;
end;
FindClose(SR);

Это немного не правильно, если верить Дельфишному хелпу.
Если ни один файл не найден, то вызывать FindClose не надо.
Это пример того, чтобы вместо указаний конкретных ссылок, надо писать что-то типа "ботай хелп (как вариант - такой-то сайт) на предмет функции/процедуры такой-то".

maggi14

может быть. я последний раз пользовался этими функциями (findfirst и findnext) еще в Паскале

dimabel

Если бы ты ботал винапи, ты бы знал, что FindFirstFile возвращает хендл либо INVALID_HANDLE_VALUE, если ни один файл не найден. Если хендл выделен, то его надо закрыть, а закрывать INVALID_HANDLE_VALUE бессмысленно.
Помнится, в паскале похожая конструкция использовалась, только не надо было вызывать FindClose.
Именно с циклом с постусловием.

bass

findfirst хорош тем, что позволяет определелить размер файла (возможно, и другие атрибуты) без его открытия (т.е. без вызова крайне медленной функции reset).
Оставить комментарий
Имя или ник:
Комментарий: