-
> ... но, может, окно надо искать после создания > окна? >
> > begin > Log('Application Started'); > if FindWindow(nil, 'Ouverture') <> 0 then > begin > MessageBox(0, 'Приложение уже запущено', 'Ouverture', > 0); > exit; > end; > Log('FindWindow Result = Not Found'); > Log('Application.Initialize'); > Application.Initialize; >
А при чем тут после или до? В приведенном коде нет никакого создания никакого окна. Партизанщина продолжается. Автор опять подсунул какой-то огрызок вместо реального кода.
-
> begin > Log('Application Started'); > if FindWindow(nil, 'Ouverture') <> 0 then > begin > MessageBox(0, 'Приложение уже запущено', 'Ouverture', > 0); > exit; > end; > Log('FindWindow Result = Not Found'); > Log('Application.Initialize'); > Application.Initialize;
Судя по всему, ошибки здесь нет, она в другом месте. Например, такое можно сэмулировать, если в любом используемом модуле написать что-нибудь в духе
initialization
Application := TApplication($12345678); То есть, попортить указатель на Application.
-
Самый простой способ отладки - это отключать (закомментировать) функционал до тех пор, пока ошибка не прекратится.
-
> Cobalt (23.08.08 08:44) [42] > Самый простой способ отладки - это отключать (закомментировать) > функционал до тех пор, пока ошибка не прекратится.
Ошибка исчезает если закоментировать строку Application.Initialization
> А при чем тут после или до? В приведенном коде нет никакого > создания никакого окна.Партизанщина продолжается. Автор > опять подсунул какой-то огрызок вместо реального кода.
Я привел реальный код из реального приложения. При чём тут создание окна вообще?
-
> Ошибка исчезает если закоментировать строку > Application.Initialization
Поставь галку "Use Debug DCUs" и посмотри что происходит при вызове Application.Initialization. Попасть можешь в следующие модули: - SockApp.pas - ComObj.pas - ComServ.pas - OleAuto.pas
Возможно, подключен еще какой-нибудь сторонный модуль, портящий значение System.InitProc.
-
> Ошибка исчезает если закоментировать строку > Application.Initialization лучше закомментируй не ее, а то, что до этой строки, вплоть до begin, и проверь тогда ошибка исчезнет? это более показательно.
-
> sniknik © (23.08.08 11:57) [45] > > Ошибка исчезает если закоментировать строку> Application. > Initializationлучше закомментируй не ее, а то, что до этой > строки, вплоть до begin, и проверь тогда ошибка исчезнет? > это более показательно.
исчезает. А если коментить эту строку - то появляется.
-
У тебя есть секции Initialization?
-
> исчезает. ну так, какие тогда сомнения?
> А если коментить эту строку - то появляется. не удивительно, если закоментить инициализацию(создание обьектов в ней) то обращение к неинициализированному даст ошибку.
-
ну блин. какая-то initialization попртила память. где-то не повезло, и попортила так, что смогло запуститься. а где-то повезло, и падает сразу. однако ж не понимаю, почему не пройтись при помощи отладчика по этому всему, раз уж бесплатного аналога valgrind под виндой нет.
--- All Your Base Are Belong to Us
-
> ketmar © (23.08.08 17:58) [49]
Крутые программеры не пользуются отладчиком. Предпочитают партизанствовать на форуме.
|