Форум — Ответы ( К темам )
? | Dr.Phoenix: Почему не работает FindFirstFile? (28-03-2003 23:17:14) |
Почему не работает FindFirstFile? Я делаю так: AnsiString Convertor=Path->Text+"*"; LPWIN32_FIND_DATA FileInfo; HANDLE Search = FindFirstFile(Convertor.c_str(),FileInfo); Label1->Caption = FileInfo->cFileName; А в результате вызывается исключение и прога вылетает... Почему так и что неправильно? | |
Георгий (29-03-2003 00:14:38) | |
Извини за грубость, но ошибка в данном случае в ДНК... LPWIN32_FIND_DATA по венгерской нотации это означает указатель на структуру WIN32_FIND_DATA. У тебя этот указатель остаётся не проинициализированным (в нём находится мусор), затем это нечто передаётся в функцию, которая думает, что работает с адресом обьекта — в результате в почти случайную ячейку памяти записывается результат работы этой функции, что и приводит к различным "спец. эффектам" (конечно слабее, чем от ошибок со стеком, но всё равно не приятно). напиши так: AnsiString Convertor="c:\\*"; WIN32_FIND_DATA structFileInfo; //добавленная строка LPWIN32_FIND_DATA FileInfo=&structFileInfo; //изменённая строка HANDLE Search = FindFirstFile(Convertor.c_str(),FileInfo); Label1->Caption = FileInfo->cFileName; Чтож ты так не внимательно читал описание функции — "времени не было" (с)? если ещё пару вопросов с аналогичным диагнозом увижу, то уйду в запой... на неделю... а может и на две... | |
Павел (29-03-2003 01:36:43) | |
Или, почти тоже самое: AnsiString Convertor="c:\\*"; WIN32_FIND_DATA FileInfo; HANDLE Search = FindFirstFile(Convertor.c_str(), &FileInfo); Label1->Caption = FileInfo.cFileName; |