Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сенсация! Код initialization может не выполнятся! [D7, Win2k, WinXP]


Страницы:   1 2 3 4 5 6

MikProg ©   (2006-07-11 21:37:00) 

Написана прога. С целью сериализации в секции initialization семи унитов регистрируется описанные в них классы через registerclass. Фенька в следующем: у меня программа работает, у клиента нет. Вставленные в секцию инициализации отладочные строки для записи в файл пишут лог в порядке инициализации модулей. В логе запуска на моей машине (XP и Win2k) отметился каждый из 7 модулей. В логе запуска того же экзешника у клиента (Win2k) отметились тольк 3 из 7 модулей !!! Это полный трындец! Я понимаю что могу грубо регистрировать классы где нибудь в одном месте, но это есть покушение на устои! Кто нибудь может объяснить?


Сергей М.   (2006-07-12 14:46:00) [61]


> MikProg ©   (12.07.06 14:44) [51]


Комментируй хоть самого господа бога? но я рекомендую вникнуть в RTTI.


MikProg   (2006-07-12 14:44:00) [62]


> хоть как-то намекало бы на суть твоей проблемы ..

В ожидании полезныхсведений я пока закомментировал RegisterClipboardFormat и жду вестей от клиента.


StriderMan   (2006-07-12 14:42:00) [63]


> Aplication.OnException, в нем ту же LogRecord() с выводом
> текста ошибки


> Достоверней чем что? Типа глобальный ExceptionHandler рантайма
> еще не готов?

initialization в модулях выполняется еще до Application.Initialize, а именно на первом beginв проекте. Поэтому если там произойдет исключение, никакой Application.OnException ничего не поймает.

ЗЫ: Только что испытал


sniknik   (2006-07-12 14:40:00) [64]

Игорь Шевченко ©   (12.07.06 13:53) [38]
> отсюда резонный вопрос - какая разница, указывать const или не указывать ?
для контроля "себя любимого". хотя честно не знал, что оптимизатор стал таким умным. всегда писал (и буду скорее всего ;).


Сергей М.   (2006-07-12 14:36:00) [65]


> MikProg ©   (12.07.06 14:09) [40]



> никто не удосужился посмотреть


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


StriderMan   (2006-07-12 14:25:00) [66]


> StriderMan ©   (12.07.06 14:15) [44]
> рекомендую обернуть код в INITIALIZATION в try..finally
> и в finally писать в лог. так достовернее будет.

а еще лучше так

try
   ...
except
 //пишем ошибку
end;
 //  пишем что все ОК


MikProg   (2006-07-12 14:23:00) [67]


> рекомендую обернуть код в INITIALIZATION в try..finally
> и в finally писать в лог. так достовернее будет.

Достоверней чем что? Типа глобальный ExceptionHandler рантайма еще не готов?


MikProg   (2006-07-12 14:20:00) [68]


> Насколько я понял такие юниты у тебя есть.

Придется, наверное, но не хочется (как не хочу и регистрировать классы где нибудь кроме initialization) - все они кандидаты на сборку в две-три библиотеки содержащие классы разных уровней иерархии.


StriderMan   (2006-07-12 14:15:00) [69]

рекомендую обернуть код в INITIALIZATION в try..finally и в finally писать в лог. так достовернее будет.


Суслик   (2006-07-12 14:13:00) [70]

автору
ты бы все-таки указал в списке юнитов проекта (он, насколько я понял, у тебя один - никаких пакетов) все юниты, которые ты в том числе неявно используешь.
Насколько я понял такие юниты у тебя есть.


Суслик   (2006-07-12 14:13:00) [71]

автору
ты бы все-таки указал в списке юнитов проекта (он, насколько я понял, у тебя один - никаких пакетов) все юниты, которые ты в том числе неявно используешь.
Насколько я понял такие юниты у тебя есть.


Суслик   (2006-07-12 14:13:00) [72]

автору
ты бы все-таки указал в списке юнитов проекта (он, насколько я понял, у тебя один - никаких пакетов) все юниты, которые ты в том числе неявно используешь.
Насколько я понял такие юниты у тебя есть.


MikProg   (2006-07-12 14:09:00) [73]


> И что же там "криминального" творится, по-твоему ?

Ничего. Просто никто не удосужился посмотретькод, а рассуждений...


isasa   (2006-07-12 14:08:00) [74]

Юрий Зотов ©   (12.07.06 12:45) [33]
Ох, и не дурак же он, этот компилятор.

Так это, я тут напрягся и вспомнил, что передача параметра по значению еще со времен Турбо-Паскаля - только то, что меньше или равно длине регистра. :)
Остальное, все равно, по ссылке.


Игорь Шевченко   (2006-07-12 13:53:00) [75]


> Ох, и не дурак же он, этот компилятор.


Об том и речь. В изначально приведенном примере строка не модифицируется, отсюда резонный вопрос - какая разница, указывать const или не указывать ?


Сергей М.   (2006-07-12 13:43:00) [76]


> MikProg ©   (12.07.06 13:41) [36]


И что же там "криминального" творится, по-твоему ?


MikProg   (2006-07-12 13:41:00) [77]

Мммда. А никто не хочет узнать что творится в IGGPaintBoxControls?

unit   IGGPaintBoxControls;

initialization

 LogRecord('IGGPaintBoxControls start');
 RegisterClass(TFrameMembers);
 CF_IGGControls:=RegisterClipboardFormat('IGG2Controls');
 LogRecord('IGGPaintBoxControls end');

finalization

end.


Юрий Зотов   (2006-07-12 13:10:00) [78]

> han_malign ©   (12.07.06 12:56) [34]

Естественно, раз приходит оригинал.


han_malign   (2006-07-12 12:56:00) [79]


> Кстати, о птичках.

- я пошел дальше и вывел RefCount - он увеличивается в WithoutVarAndConst... :)


han_malign   (2006-07-12 12:45:00) [80]

OFFTOP

> Создается копия строки - а зачем, если она не нужна? Впустую тратится время, впустую тратится память.

- вот уж от кого, а от вас(тебя) не ожидал...
{$H+}
Copy on change


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо