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

    > б) работает на всех компах, кроме одного...
    >

    Пока работает. Так карты выпали. Испорченная память не всегда приводит к AV.
  • Сергей М. © (22.08.08 21:27) [21]

    > почему:
    > а) не падает на строке с FindWindow


    А это совсем другая история)

    И с какого собссно перепугу там что-то куда-то должно "падать" ?
    Нет, ну завалить , конечно, при особом перепуге можно что угодно.. Но ведь это еще и постараться нужно !)

    > б) работает на всех компах, кроме одного...


    То ли тебе не повезло, то ли у тебя ошибка в 17-й строке)

    Я  - за 17-ю строку, ежели что)..
  • Юрий Зотов © (22.08.08 21:54) [22]
    > keymaster ©   (22.08.08 21:18) [19]

    > Хм... Тогда почему...

    Хм... не знаю. Я программист, а не гадалка. Вам ведь уже насчет партизана и 17-й строки сказали? Неужели код вызова FindWindow настолько секретен?
  • Урсулапов (22.08.08 22:23) [23]
    Будьте осторожны, за пытку программиста-партизана и выбивания из него кода программы можете попасть под Гаагский трибунал. И за меньшее сажали :)))
  • Урсулапов (22.08.08 22:24) [24]
    Или как там еще, не дай бог Буш приедет ему помогать. Прошу прощения.
  • keymaster © (22.08.08 22:42) [25]

    > Хм... не знаю. Я программист, а не гадалка. Вам ведь уже
    > насчет партизана и 17-й строки сказали? Неужели код вызова
    > FindWindow настолько секретен?


     if FindWindow(nil, 'Ouverture') <> 0 then
     begin
       MessageBox(0, 'Приложение уже запущено', 'Ouverture', 0);
       exit;
     end;

  • Урсулапов (22.08.08 22:47) [26]
    Я в этом не силен, но, может, окно надо искать после создания окна?
  • Сергей М. © (22.08.08 22:53) [27]

    > if FindWindow(nil, 'Ouverture') <> 0 then


    Кто-нибудь видит в этой строке хоть малейший повод для "падения" кого-то там куда-то там ?

    Я не вижу ..
  • keymaster © (22.08.08 22:59) [28]

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

    Надо найти такое же окно.  И если оно уже есть - то вообще завершать работу.
  • Andy BitOff © (22.08.08 23:00) [29]
    > keymaster ©   (22.08.08 22:42) [25]

    Нужен код от:

    > Строка первая, идёт сразу после begin:
    > 22.08.2008  15:42  Application Started

    и до...

    > А дальше — AV
  • Сергей М. © (22.08.08 23:02) [30]

    > keymaster ©   (22.08.08 22:59) [28]
    > Надо найти такое же окно.  И если оно уже есть - то вообще
    > завершать работу


    Ну и ищи его себе на здоровье, хоть до второго пришествия ..

    Но причем здесь Application.Initialize ?
  • Virgo_Style © (22.08.08 23:25) [31]
    Ну.. Если не должно, а все-ж таки падает, и именно на этой строке - я б попробовал #0 к строке добавить.
  • keymaster © (22.08.08 23:26) [32]

    > Сергей М. ©   (22.08.08 23:02) [30]
    > > keymaster ©   (22.08.08 22:59) [28]> Надо найти такое
    > же окно.  И если оно уже есть - то вообще > завершать работуНу
    > и ищи его себе на здоровье, хоть до второго пришествия .
    > .

    Вы это о чём, собственно?
    Мне нужно найти определённое окно с целью предотвращения запуска второй копии приложения.


    > Andy BitOff ©   (22.08.08 23:00) [29]
    > > keymaster ©   (22.08.08 22:42) [25]Нужен код от:> Строка
    > первая, идёт сразу после begin:> 22.08.2008  15:42  Application
    > Startedи до...> А дальше — AV

    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;

  • Andy BitOff © (22.08.08 23:31) [33]
    Покажи Log()
  • keymaster © (22.08.08 23:45) [34]

    > Andy BitOff ©   (22.08.08 23:31) [33]
    > Покажи Log()

    procedure Log(msg : String);
    var
    FLogFile : TextFile;
    begin
     AssignFile(FLogFile, 'log.txt');
     Append(FLogFile);
     Writeln(Flogfile, DateTimeToStr(now)+#32+msg);
     CloseFile(FLogFile);
    end;

  • Anatoly Podgoretsky © (22.08.08 23:47) [35]
    > Сергей М.  (22.08.2008 22:53:27)  [27]

    Вот справка

    If the function fails, the return value is NULL. To get extended error information, call GetLastError.
  • Anatoly Podgoretsky © (22.08.08 23:49) [36]
    > keymaster  (22.08.2008 22:59:28)  [28]

    Поиск окна не гарантирует правильности, для гарантии надо использовать мьютекс.
  • keymaster © (22.08.08 23:59) [37]

    > Anatoly Podgoretsky ©   (22.08.08 23:49) [36]
    > > keymaster  (22.08.2008 22:59:28)  [28]Поиск окна не гарантирует
    > правильности, для гарантии надо использовать мьютекс.

    так не в этом месте AV возникает...
  • Andy BitOff © (23.08.08 00:02) [38]
    > keymaster ©

    Ну что я могу сказать, здесь ошибок нет, если не считать таковой то, что при отсутствии log.txt будет ошибка, которая не проверяется. В остальном нормально, должно работать. Ищи в другом месте. Пройди по F7.
  • Anatoly Podgoretsky © (23.08.08 00:11) [39]
    > keymaster  (22.08.2008 23:59:37)  [37]

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