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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2015, 12:37   #11
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Тогда опишите переменную bmp2:TBitmap; вне функции (сделайте ее глобальной), а bmp2.free; уберите (или отключите)
Вы читаете мои ответы?
DarkHacker вне форума Ответить с цитированием
Старый 06.06.2015, 12:39   #12
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Читаю!

Только у меня вопрос: а для чего эта строчка?
Код:
if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 06.06.2015, 12:41   #13
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Читаю!

Только у меня вопрос: а для чего эта строчка?
Код:
if ( sRec.Name <> '.' ) and ( sRec.Name <> '..' ) then
Для того чтобы определить ссылки на "текущий каталог" и "выход на уровень вверх". Так как они не определяются как папки.

Какое это имеет отношение к вопросу?
DarkHacker вне форума Ответить с цитированием
Старый 06.06.2015, 12:44   #14
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Попробуйте это условие отключить (чтобы не заходить в папки). Будут грузиться картинки?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 06.06.2015, 12:46   #15
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Попробуйте это условие отключить (чтобы не заходить в папки). Будут грузиться картинки?
Заходить в папки обязательно))) Тогда весь смысл алгоритма теряется, я так же ставил условия проверки на существование файла и т.д. но результатов это не дало. О проблемной строке я говорил ранее.
DarkHacker вне форума Ответить с цитированием
Старый 06.06.2015, 12:47   #16
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Попробуйте временно отключить bmp2.free; (поставить 2 косые черты // )
лучше сделай
Код:
FreeandNil(bmp2);
чтоб ДОСТОВЕРНО получить AV на СЛЕДУЮЩЕЙ итерации.
Цитата:
Деструктор применяется ТОЛЬКО КОГДА ВЫПОЛНЕНО УСЛОВИЯ ДЛЯ ВЫХОДА ИЗ ЦИКЛА.
Да вот ВЫХОДА как раз и не наблюдается.
последний оператор цикла сводит на нет ВСЕ предыдущие "попытки".

Цитата:
Код:
    Application.ProcessMessages;
    isFound := FindNext( sRec ) = 0;
  end;
Для двух секундного цикла НЕ использующего общение с формами (данные о нажатии и.п.) Application.ProcessMessages; абсолютно бесполезен и более того ЗАМЕДЛЯЕТ работу.

Лучше всего придерживаться простого правила на каком уровне завел ресурс или что либо открыл, на ТОМ же уровне и закончил (освободил, закрыл) работу с ним.
И Цикл и вообще любой begin ... end это тоже УРОВЕНЬ работы. Значил если создал (bmp2:=TBitmap.Create) или открыл ( isFound:=FIndFirst) ДО начала цикла, то и заканчивать (bmp2.Free) (FindClose) НАДО ПОСЛЕ цикла.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.06.2015 в 13:02.
evg_m вне форума Ответить с цитированием
Старый 06.06.2015, 12:48   #17
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Тогда Exit; поставить:
Код:
            if Result<>'' then
	     begin
	        isFound:=false;
		FindClose(sRec);
                    bmp2.free;
                   Exit;
             end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 06.06.2015, 12:50   #18
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
лучше сделай
Код:
FreeandNil(bmp2);
чтоб ДОСТОВЕРНО получить AV на СЛЕДУЮЩЕЙ итерации.

Да вот ВЫХОДА как раз и не наблюдается.
последний оператор цикла сводит на нет ВСЕ предыдущие "попытки".


Для двух секундного цикла НЕ использующего общение с формами (данные о нажатии и.п.) Application.ProcessMessages; абсолютно бесполезен и более того ЗАМЕДЛЯЕТ работу.

Не понял про выход. Как же не наблюдается. Когда переберутся все поддиректории и проверятся все файлы, цикл заканчивается. Разве я не прав?

Про Application.ProcessMessages; спасибо.

Цитата:
FreeandNil(bmp2);
Также.

Я заметил что ошибка именно на загрузке бмп, какие могут быть вообще там проблемы, кроме отсутствия файла)
Мне кажется нужно копать в эту сторону, но до обращения на форум, как мне казалось, я все перепробовал.

Проблема остается открытой.

Код:
if (sRec.Attr=32) then
			begin
        bmp2:=TBitmap.create();
        bmp2.LoadFromFile(Path + '\' + sRec.Name);
         {
         	if(simple_search_img(bmp,bmp2)>=1) then
						begin
							  Result:=GetLastDir(Path);
                break;
						  end;
              }
        FreeandNil(bmp2);
       end;
Все также.
Я проводил эксперименты и нашел строку
Код:
bmp2.LoadFromFile(Path + '\' + sRec.Name);
, давайте будем отталкиваться от этого?

Последний раз редактировалось DarkHacker; 06.06.2015 в 13:03.
DarkHacker вне форума Ответить с цитированием
Старый 06.06.2015, 15:46   #19
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Тогда Exit; поставить:
Код:
            if Result<>'' then
	     begin
	        isFound:=false;
		FindClose(sRec);
                    bmp2.free;
                   Exit;
             end;
Вы о чем? ))
DarkHacker вне форума Ответить с цитированием
Старый 06.06.2015, 15:52   #20
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Код:
bmp2.LoadFromFile(Path + '\' + sRec.Name);
Возможно путь неправильно указан (1-я буква - диск, 2-й символ - двоеточие и т.д.; не должно быть двойных слэшов "\\"), возможно загружает не картинку, а текстовый файл, например. Тут надо находить bmp-файлы

Цитата:
Вы о чем? ))
Это немедленный выход из функции!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 06.06.2015 в 16:06. Причина: добавил
newerow1989 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при загрузке формы CBETJIbIu Microsoft Office Access 2 03.02.2012 23:01
Ошибка при загрузке tae1980 Microsoft Office Excel 2 23.01.2012 10:58
Ошибка: Выбора ОС при загрузке Foxx Операционные системы общие вопросы 5 11.09.2009 01:28
ОШИБКА ПРИ ЗАГРУЗКЕ Костян Пират Операционные системы общие вопросы 5 21.02.2009 12:14
Ошибка при загрузке.... Ronni10 Операционные системы общие вопросы 6 10.01.2008 22:20