Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
ВнизFindFirst etc Найти похожие ветки
← →
Seldon (2003-08-26 13:07) [0]Здрасьте!
Почему следующий код находит файлы с расширением html?
var
FS:TSearchRec;
begin
if FindFirst("C:\*.htm",faAnyFile-faDirectory,FS)=0 then
repeat
ListBox1.Items.Add(FS.Name)
until FindNext(FS)<>0;
FindClose(FS);
end;
← →
Sandman25 (2003-08-26 13:15) [1]Наверное, FindFirst-ом проверяются только 3 первых символа расширения.
← →
Seldon (2003-08-26 13:20) [2]>Sandman25
Точно. Значит это устаревшая система поиска и должна быть более новая?
← →
Miralex (2003-08-26 13:26) [3]А в чем проблема потом с твоего ListBox-а повыкидывать html?
← →
AlexKniga (2003-08-26 13:29) [4]Sandman25 (26.08.03 13:15) [1]
> Наверное, FindFirst-ом проверяются только 3 первых символа расширения.
Не верно.
Seldon (26.08.03 13:20) [2]
> Значит это устаревшая система поиска и должна быть более новая?
Нет, это особенность мастдая. Поиск проводится не только среди LFN, но и 8.3
← →
AlexKniga (2003-08-26 13:33) [5]
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;
← →
Seldon (2003-08-26 13:38) [6]//А в чем проблема потом с твоего ListBox-а повыкидывать html?
Да не в чём, просто хотелось разобраться, почему так происходит.
//AlexKniga
Спасибо за разъяснение.
← →
Song (2003-08-26 15:32) [7]2Seldon
if FindFirst("C:\*.htm*",faAnyFile-faDirectory,FS)=0 then
или
if FindFirst("C:\*.htm?",faAnyFile-faDirectory,FS)=0 then
?
← →
Sfagnum (2003-08-26 15:44) [8]
if ExtractFileExt(FS.Name) = "htm" then ListBox1.Items.Add(FS.Name)
← →
Андрей Сенченко (2003-08-26 15:48) [9]Еще раз внимательно смотрим вопрос и затем ответ Song © (26.08.03 15:32) [7]
"htm" и "htm*" все-таки разные вещи
← →
Song (2003-08-26 15:51) [10]2Sfagnum © (26.08.03 15:44) [8]
2Андрей Сенченко © (26.08.03 15:48) [9]
Как вариант можно так:
IF Pos(".htm",FS.Name)>0 then ...
← →
Anatoly Podgoretsky (2003-08-26 15:56) [11]Если надо только ".htm", то единственный вариант извлекать рассширение и сравнивать.
← →
Андрей Сенченко (2003-08-26 15:59) [12]Song © (26.08.03 15:51) [10]
Низя так.
if FindFirst("C:\*. htm",faAnyFile-faDirectory, FS)=0 then
repeat
ListBox1.Items.Add( FS.Name) // каким образом сюда может
// попасть файл *.html
// чтобы отработал pos()
until FindNext(FS)<>0;
← →
Андрей Сенченко (2003-08-26 16:00) [13]Anatoly Podgoretsky © (26.08.03 15:56) [11]
нужно как раз *.html
← →
Song (2003-08-26 16:03) [14]2Андрей Сенченко © (26.08.03 15:59) [12]
надо сделать по *.* а потом Pos()
← →
Андрей Сенченко (2003-08-26 16:07) [15]Song © (26.08.03 16:03) [14]
ТОгда да.
← →
Anatoly Podgoretsky (2003-08-26 16:10) [16]Song © (26.08.03 16:03) [14]
Не пойдет, htm и html дадут одинаковый результат, вот наоборот можно, но наоборот нет проблемы. FindFirst("C:\*.html",
← →
Anatoly Podgoretsky (2003-08-26 16:15) [17]Собственно проблема возникла из за недопонимя.
В файловой системе есть два имени, и поиск длеается по обеим.
Длинное имя / Короткое имя
XXX.HTM XXX.HTM
xxx.htm XXX.HTM
xxx.html XXX~1.HTM
← →
Song (2003-08-26 16:19) [18]2Anatoly Podgoretsky © (26.08.03 16:10) [16]
Дык я про то и говорю.
Я сказал как найти htm и html без конкретного указания то или иного расширения. На что я и предложил *, а потом Pos()
← →
Андрей Сенченко (2003-08-26 16:21) [19]пойдем в "потрепаться" ?
← →
Anatoly Podgoretsky (2003-08-26 16:25) [20]Зачем и так уже все точки над и расставлены.
← →
Seldon (2003-08-26 16:34) [21]Народ! Как отсеять из результатов *.html я и сам знаю (извлекаю расширение и сравниваю). Единственное, что меня интересовало, почему *.htm находит *.html. Спасибо за разъяснение
AlexKniga © (26.08.03 13:33) [5] и
Anatoly Podgoretsky © (26.08.03 16:15) [17]
← →
Sandman25 (2003-08-26 16:44) [22]AlexKniga © (26.08.03 13:29)
Понял, спасибо. И все же проверяются и только 3 первых символа расширения тоже :)
С одной стороны, проверяются все символы в длинном расширении, с другой стороны проверяются только 3 первых символа в коротком расширении.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c