Странное поведение FindFirstFile/FindNextFile
От: ZegSoft Россия  
Дата: 19.06.13 18:05
Оценка:
Всем добрый вечер. Столкнулся со странный поведением функций FindFirstFile/FindNextFile.
Есть простенький код, который должен искать в папке C:\test все файлы, окончивающиеся символами 1.txt:

#include "stdafx.h"
#include "iostream"
#include <windows.h>
#include <tchar.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"russian");
    HANDLE hSearch = NULL;
    WIN32_FIND_DATA    wfd;
    memset(&wfd, 0, sizeof(WIN32_FIND_DATA));
    if (!((hSearch = FindFirstFile("C:\\test\\*1.txt", &wfd)) == INVALID_HANDLE_VALUE))
    do
        std::cout<<wfd.cFileName<<std::endl;
    while (FindNextFile(hSearch, &wfd)); 
    FindClose (hSearch);
    return 0;
}


Так вот, если в папке лежат файлы Form1.txt,Form2.txt и Form3.txt, то программа находит Form1.txt. Но если в папке лежат файлы Форма1.txt,Форма2.txt и Форма3.txt, то программа выводит ВСЕ 3 файла! Почему так происходит?? В чем тут подводные камни? Кто-нибудь сталкивался с подобным? Заранее спасибо всем откликнувшимся)


20.06.13 08:52: Перенесено модератором из 'C/C++. Прикладные вопросы' — Odi$$ey
Странное поведение FindFirstFile/FindNextFile
От: Сергей Мухин Россия  
Дата: 19.06.13 18:09
Оценка: 2 (1)
#Имя: FAQ.winapi.FindFirstFile.shortnameonly
Здравствуйте, ZegSoft, Вы писали:


ZS>Так вот, если в папке лежат файлы Form1.txt,Form2.txt и Form3.txt, то программа находит Form1.txt. Но если в папке лежат файлы Форма1.txt,Форма2.txt и Форма3.txt, то программа выводит ВСЕ 3 файла! Почему так происходит?? В чем тут подводные камни? Кто-нибудь сталкивался с подобным? Заранее спасибо всем откликнувшимся)


обсуждалось много много раз. Она ищет "короткие" имена. Запусти dir /x и посмотри.
---
С уважением,
Сергей Мухин
Re[2]: Странное поведение FindFirstFile/FindNextFile
От: ZegSoft Россия  
Дата: 19.06.13 18:15
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>Здравствуйте, ZegSoft, Вы писали:



ZS>>Так вот, если в папке лежат файлы Form1.txt,Form2.txt и Form3.txt, то программа находит Form1.txt. Но если в папке лежат файлы Форма1.txt,Форма2.txt и Форма3.txt, то программа выводит ВСЕ 3 файла! Почему так происходит?? В чем тут подводные камни? Кто-нибудь сталкивался с подобным? Заранее спасибо всем откликнувшимся)


СМ>обсуждалось много много раз. Она ищет "короткие" имена. Запусти dir /x и посмотри.


Спасибо, теперь все ясно. А можно это как-то исправить? Есть альтернатива? Ведь стандартный поисковик "Пуск-Найти" ищет корректно.
Re[3]: Странное поведение FindFirstFile/FindNextFile
От: Сергей Мухин Россия  
Дата: 20.06.13 04:31
Оценка:
Здравствуйте, ZegSoft, Вы писали:

СМ>>обсуждалось много много раз. Она ищет "короткие" имена. Запусти dir /x и посмотри.


ZS>Спасибо, теперь все ясно. А можно это как-то исправить? Есть альтернатива? Ведь стандартный поисковик "Пуск-Найти" ищет корректно.


в WIN32_FIND_DATA все должно быть, что бы разобраться.
---
С уважением,
Сергей Мухин
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.