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

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

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

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

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

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

Нет с потоками не работаю, может из-за колва файлов...буду сейчас проверять.

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
begin
  if OpenPictureDialog1.Execute then begin
    for i := 0 to 1000000 do begin
      bmp.LoadFromFile (OpenPictureDialog1.FileName);
      Button2.Caption := IntToStr (i);
      Application.ProcessMessages;
    end;
  end;
end;
Для одной картинки все ок.
Пофакту: имеем 5 директорий в 4х из них по одному файлу, в 1 лежит 15 файлов.
При цикле что я писал выше на 418 элементе выкидает ошибку, пробовал удалять этот файл и т.д. это не влияет, т.е. проблема не в файле.

UPDATE

Сделал

Код:
if(bmp.Handle<=0) then
         bmp.loadfromfile(AList_actions[i]);
Выполнило все итерации..

Последний раз редактировалось DarkHacker; 08.06.2015 в 14:44.
DarkHacker вне форума Ответить с цитированием
Старый 08.06.2015, 14:45   #52
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ну а как в посте #45 делал?

Короче, метода такая:
1. копируешь проект (делаешь копию)
2. методично удаляешь всё подряд поочередно проверяя наличие ошибки
3. когда ошибка исчезает - возвращаешь последнее и на п. 2
4. если больше нечего удалять (т.е. удалил всё, что не влияет на появление ошибки), а непонимание осталось - выкладываешь сюда

Ну или просто
1. выкладываешь проект сюда

Последний раз редактировалось Sibedir; 08.06.2015 в 14:54.
Sibedir вне форума Ответить с цитированием
Старый 08.06.2015, 14:48   #53
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Ну а как в посте #45 делал?
Нет. В том методе ничего "принципиального" вроде как нет. Тот же перебор и т.д. Просто сейчас я один раз строю список и потом уже по нему гоняю итерации

Только что погонял 10к, на 6к выбило такую же ошибку.
Но уже хоть какой-то прогресс.

UPDATE
Изменил

Код:
if(bmp.Handle<=0) then
         bmp.loadfromfile(AList_actions[i]);
На

Код:
if(bmp.Handle<0) then
         bmp.loadfromfile(AList_actions[i]);
Выполнились все 10к итераций.

Последний раз редактировалось DarkHacker; 08.06.2015 в 14:51.
DarkHacker вне форума Ответить с цитированием
Старый 08.06.2015, 14:54   #54
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Все нормально с LoadFromFile. Нет утечек. Откуда Picture?
Код из #47 запустил в главном 5000, 15 файлов в каталоге - без проблем
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.06.2015, 14:59   #55
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от DarkHacker Посмотреть сообщение
Нет. В том методе ничего "принципиального" вроде как нет.
DarkHacker, давай без "вроде как". У меня у самого таких "вроде как" знаешь сколько было. Программа работает не по задуманному алгоритму, а по фактической его реализации. Сам понимаешь о чём я.

Цитата:
Сообщение от DarkHacker Посмотреть сообщение
UPDATEИзменил
...
На
Код:
if(bmp.Handle<0) then
         bmp.loadfromfile(AList_actions[i]);
Выполнились все 10к итераций.
Вообще ничё не понял. Зачем проверка хэндела понадобилась? bmp кто-то еще трогал?

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

Цитата:
Сообщение от Sibedir Посмотреть сообщение
DarkHacker, давай без "вроде как". У меня у самого таких "вроде как" знаешь сколько было. Программа работает не по задуманному алгоритму, а по фактической его реализации. Сам понимаешь о чём я.
Так мне ваш алгоритм и не подходит

Цитата:
Правда, тратит он на это больше 2 секунд.
У меня за 2 секунды с 10-15 вариантов уже пробежит.
DarkHacker вне форума Ответить с цитированием
Старый 08.06.2015, 15:13   #57
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
DarkHacker, давай без "вроде как". У меня у самого таких "вроде как" знаешь сколько было. Программа работает не по задуманному алгоритму, а по фактической его реализации. Сам понимаешь о чём я.

Вообще ничё не понял. Зачем проверка хэндела понадобилась? bmp кто-то еще трогал?
Помогите найти ошибку тогда...

Код:

for j:=0 to 10000 do
begin
 bmp := TBitmap.Create;
        
for i:=0 to (AList_actions.count)-1 do
  begin
         if(bmp.Handle<0) then
         bmp.loadfromfile(AList_actions[i]);
         application.ProcessMessages;

         memo2.Lines.Add(inttostr(j)+' ==>'+AList_actions[i]);

                end;
                
         bmp.ReleaseHandle;
         bmp.Dormant;
         bmp.FreeImage;
         bmp.Free;

end;
Если убираю валятся ошибки. И да я понимаю что ВЫШЕ создается обьект но у меня ошибки появляются без этой строки...
Я уже 5 день с этим целые сутки, не смейтесь пожалуйста если сделал невероятную глупость)
DarkHacker вне форума Ответить с цитированием
Старый 08.06.2015, 15:24   #58
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

1. Это вызывается в таймере?
2. Winda - x64?
3. Еще раз пожалуйста: на какой строчке ошибка и её текст? "too many consecutive exceptions"?
Sibedir вне форума Ответить с цитированием
Старый 08.06.2015, 15:25   #59
DarkHacker
Форумчанин
 
Аватар для DarkHacker
 
Регистрация: 12.04.2008
Сообщений: 105
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
1. Это вызывается в таймере?
2. Winda - x64?
3. Еще раз пожалуйста: на какой строчке ошибка и её текст? "too many consecutive exceptions"?
1. Да, это вызывается в таймере в с интервалом "30".
2. Нет, XP.
3. На строке загрузки bmp из списка. Да такая ошибка.
DarkHacker вне форума Ответить с цитированием
Старый 08.06.2015, 15:30   #60
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Скинь сюда архивом пару типовых картинок.
Цитата:
Сообщение от DarkHacker Посмотреть сообщение
1. Да, это вызывается в таймере в с интервалом "30".
1. В таймере ставь самоотключение: Timer1.Enable := False
2. После отработки цикла заново его врубай: Timer1.Enable := True

или

избався от application.ProcessMessages;

Трабла всё-таки с памятью. Это 99%. При загрузке есть вложенные try. Там следы у тебя скорее всего и теряются.

Последний раз редактировалось Sibedir; 08.06.2015 в 15:37.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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