Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-24542
GreySerg
2003-08-26 17:28
2003.09.08
Возврат в несортированный список в TListBox


3-24308
izx
2003-08-18 19:37
2003.09.08
Числовые значения целого типа в SQL запросах через параметры


1-24505
Rel_
2003-08-28 11:47
2003.09.08
Работа с классами


9-24296
Gayrus
2003-03-05 03:32
2003.09.08
OpenGL форма и компоненты


1-24501
николай
2003-08-27 12:05
2003.09.08
метод статических испытаний кто нибудь знает?





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