Конференция "Прочее" » Приложение падает на Application.Initialize;
 
  • Германн © (23.08.08 01:12) [40]

    > ... но, может, окно надо искать после создания
    > окна?
    >


    >
    > 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;
    >

    А при чем тут после или до? В приведенном коде нет никакого создания никакого окна.
    Партизанщина продолжается. Автор опять подсунул какой-то огрызок вместо реального кода.
  • Servy © (23.08.08 03:38) [41]
    > 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]
    Самый простой способ отладки - это отключать (закомментировать) функционал до тех пор, пока ошибка не прекратится.
  • keymaster © (23.08.08 09:13) [43]

    > Cobalt   (23.08.08 08:44) [42]
    > Самый простой способ отладки - это отключать (закомментировать)
    > функционал до тех пор, пока ошибка не прекратится.

    Ошибка исчезает если закоментировать строку
    Application.Initialization

    > А при чем тут после или до? В приведенном коде нет никакого
    > создания никакого окна.Партизанщина продолжается. Автор
    > опять подсунул какой-то огрызок вместо реального кода.

    Я привел реальный код из реального приложения.
    При чём тут создание окна вообще?
  • Loginov Dmitry © (23.08.08 10:15) [44]
    > Ошибка исчезает если закоментировать строку
    > Application.Initialization


    Поставь галку "Use Debug DCUs" и посмотри что происходит при вызове Application.Initialization. Попасть можешь в следующие модули:
    - SockApp.pas
    - ComObj.pas
    - ComServ.pas
    - OleAuto.pas

    Возможно, подключен еще какой-нибудь сторонный модуль, портящий значение System.InitProc.
  • sniknik © (23.08.08 11:57) [45]
    > Ошибка исчезает если закоментировать строку
    > Application.Initialization
    лучше закомментируй не ее, а то, что до этой строки, вплоть до begin, и проверь тогда ошибка исчезнет? это более показательно.
  • keymaster © (23.08.08 15:49) [46]

    > sniknik ©   (23.08.08 11:57) [45]
    > > Ошибка исчезает если закоментировать строку> Application.
    > Initializationлучше закомментируй не ее, а то, что до этой
    > строки, вплоть до begin, и проверь тогда ошибка исчезнет?
    >  это более показательно.

    исчезает.
    А если коментить эту строку - то появляется.
  • Andy BitOff © (23.08.08 16:16) [47]
    У тебя есть секции Initialization?
  • sniknik © (23.08.08 16:45) [48]
    > исчезает.
    ну так, какие тогда сомнения?

    > А если коментить эту строку - то появляется.
    не удивительно, если закоментить инициализацию(создание обьектов в ней) то обращение к неинициализированному даст ошибку.
  • ketmar © (23.08.08 17:58) [49]
    ну блин. какая-то initialization попртила память. где-то не повезло, и попортила так, что смогло запуститься. а где-то повезло, и падает сразу. однако ж не понимаю, почему не пройтись при помощи отладчика по этому всему, раз уж бесплатного аналога valgrind под виндой нет.

    ---
    All Your Base Are Belong to Us
  • Германн © (23.08.08 18:31) [50]

    > ketmar ©   (23.08.08 17:58) [49]

    Крутые программеры не пользуются отладчиком. Предпочитают партизанствовать на форуме.
 
Конференция "Прочее" » Приложение падает на Application.Initialize;
Есть новые Нет новых   [134442   +10][b:0][p:0.001]