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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.022 c
8-24569
_Alex_
2003-05-06 20:48
2003.09.08
рисование на Canvas не повреждая фон


6-24571
venoel
2003-07-06 21:41
2003.09.08
Формирование картинки на сервере


1-24532
¤ZDima¤
2003-08-21 23:02
2003.09.08
Проблемы с TThread 2...


6-24588
Skywalker
2003-07-03 15:14
2003.09.08
Как получить физический путь к root сайта


6-24573
Samvel
2003-06-27 19:14
2003.09.08
Pageproducer