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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 23:23   #1
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию Ошибка при созаднии формы

Доброго времени суток всем.


Запускается программа:

Код:
procedure TForm1.FormCreate(Sender: TObject);
var
a:integer; 
begin
 form1.Show;
 for a:=0 to 100 do begin
    application.processmessages;
    //тут код по добалению итемов в ListView
 end
end;
Вот примерно такой код. Цикл на самом деле большой (вовсе не 100). Ошибка в том, что если свернуть программу во время выполнения цикла, а потом ее развернуть появляется:
Цитата:
Project Project1.exe raised exception class EAccessViolation with message...
Если нажать ок -- выполнение цикла продолжается.
Перепробовал все. Убрал весь лишний код из FormCreate, удалил всевозможные OnShow, вырубил все таймеры и т.д. - ошибка все равно присутствует!

Притом в программе есть практически дубликат этого же когда, но он выполняется не в Create формы - и там таких ошибок нет.

Думаю, тут какая-то специфичная особенность FormCreate...

В чем может быть проблема?

Заранее благодарен!
Anfall вне форума Ответить с цитированием
Старый 02.10.2010, 00:03   #2
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Скинь пожалуйсто весь исходник, но без EXE
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 02.10.2010, 00:26   #3
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

chertovich,
Исходник скинуть к сожалению не могу, программа довольно большая(
Проверял все что можно, комментил почти весь код. Все события на форме вырубил. Все равно эта фигня(
Anfall вне форума Ответить с цитированием
Старый 02.10.2010, 00:31   #4
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Была похожая ситуация. Попробуй код из FormCreate перенести в FormShow, а ещё лучше в FormActivate.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 02.10.2010, 00:32   #5
ZaRDaK
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 197
По умолчанию

Дык, если человек помещает код в OnCreate, значит этот код должен быть там.
ZaRDaK вне форума Ответить с цитированием
Старый 02.10.2010, 00:39   #6
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Не обязательно. У меня код был в OnCreate формы, не работал, я его поместил в OnActivate заработал, я его там и оставил. Может быть произвёл какие-то изменения в других процедурах, но если он там работает, то там ему и место
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 02.10.2010, 01:04   #7
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Тогда хотябы весь код FormCreat-а
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 02.10.2010, 01:06   #8
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Вот это form1.Show; убрать из кода пробывали?
Зачем в классе формы TForm1 писать вызов свойств этой же формы через это form1.свойство;!? это лишнее, достаточно написать свойство;
Alter вне форума Ответить с цитированием
Старый 02.10.2010, 01:11   #9
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

NoName_emaNoN,
Спасибо. Пробовал и в ОнШоу и в ОнАктивэйт - также проблема...

chertovich, я пробовал комменить все кроме этого цикла в онкреэйт - все равно та же проблема. + убирал все их ОнШоу и т.д.

Alter,
Без Show - все грузится норм, но естественно без "показа" главной формы.

Самое интересная, что в программе есть почти индеетчиный кусок кода, который НЕ в Онкрейт выполняется без ошибки при сворачивании.

PS: Ссори за кросспостинг, не туда ткнул.
-------------
Как оказалось проблема в модуле CoolTrayIcon. А именно:
Код:
if Msg.wParam = SC_RESTORE then
      begin
       if Application.MainForm.WindowState = wsMinimized then
          Application.MainForm.WindowState := wsNormal;
        Application.MainForm.Visible := True;  
      end;
Правда почему конфликт возник так и не понял.

Последний раз редактировалось Stilet; 02.10.2010 в 13:26.
Anfall вне форума Ответить с цитированием
Старый 02.10.2010, 01:18   #10
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Попробуй сначала загрузить всё, а потом показать форму.
Или если обязательно отображение прогресса, то использовать вторую формочку с прогресс баром или ещё чем-нибудь, главное другую.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка sql запроса при открытии формы R Dmitry Microsoft Office Access 0 08.07.2010 02:04
ошибка при закрытии формы после обработки в потоке furstenberg Общие вопросы Delphi 7 05.07.2010 12:19
Ошибка при показе формы. vedro-compota Общие вопросы Delphi 9 27.06.2010 20:02
при обращении с одной формы на другую вылетатет ошибка cowboy Общие вопросы Delphi 21 04.09.2009 14:25
При создании формы! Anton Помощь студентам 4 08.08.2007 08:20