Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2009, 15:00   #1
Serejka
 
Регистрация: 25.07.2008
Сообщений: 7
По умолчанию Проблемы с FindNext

Вот процедурка, выдающая список файлов в указанной папке:

Код:
procedure ListFileDir(Path: string;  List: TStrings; Format: String);
var
  SR: TSearchRec;
begin
  if Format = '' then Format := '*';
  if FindFirst(Path + '*.' + Format, faAnyFile, SR) = 0 then
  begin
    repeat
      if (SR.Attr <> faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        List.Add (SR.Name);
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
Работает хорошо, но только если файлов в указанном каталоге не более трёх Если больше, то на строке " until FindNext(SR) <> 0;" возникает ошибка:
Project Bla-Bla.exe faulted with message: 'access violation at 0x00000000: read of address 0x00000000'. Process Stopped. Use Step or Run to continue.

Пробовал посмотреть где конкретно косяк при пошаговой отладке на ассме: в реализации функции FindNext:
...
call FindNatchingFile
pop ebx
ret - вот здесь-то и вылетает ошибка (более глубоко пытался разобраться, но с низкоуровневым программированием я пока только на Вы )

P.s.: перезагрузка как Delphi, так и компа не помогла

Последнее предупреждение по поводу оформления кода.
Читайте правила! Чтоб потом не обижаться...

Последний раз редактировалось mihali4; 16.03.2009 в 15:04. Причина: Неправильное оформление кода
Serejka вне форума Ответить с цитированием
Старый 16.03.2009, 15:12   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Никаких проблем с вашим кодом не наблюдается. Нормально, без сбоев отрабатывает на большом количестве файлов.
Ищите ошибку либо в самом каталоге, либо в другом месте программы.
mihali4 вне форума Ответить с цитированием
Старый 16.03.2009, 15:16   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

ну вообще не очен красиво менять параметр переданный без var, хотя и вообще менять принимаемые параметры не лучший тон. Сделайте лучше функцию а не процедуру, которая будет возвращать Tstringlist
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 16.03.2009, 15:23   #4
Serejka
 
Регистрация: 25.07.2008
Сообщений: 7
По умолчанию

И правда некрасиво
Заменил процедуру функцией - помогло )

Спасибо за внимание и ответы.
Serejka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с типами tavrocotaps Общие вопросы C/C++ 3 29.01.2009 17:28
проблемы с IE xakzona Помощь студентам 1 16.12.2008 21:53
проблемы с IBConsole b00s БД в Delphi 7 19.01.2008 15:56
проблемы с TFileStream andrey4623 Общие вопросы Delphi 9 01.11.2007 20:44