pink_frog |
Отправлено: 03.03.2006, 11:16 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Приходится реанимировать чужой прооект, спросить не у кого.
Сразу после компиляции программа открывается как надо, работает. После открываю этот же (свежайший) экзешник — он начинает работать, подгружает базу (InterBase), просит залогиниться. Дальше окно загрузки (в это время создаются окна программы) — и все. Окно загрузки закрывается, а основное не открывается. Программа не отвечает, висит только на панели задач.
Куда передается управление после Application->Run() я понять не могу.
Кто умный и опытный — подскажите хоть, проблему искать в коде или в настройках билдера. |
|
Guest |
Отправлено: 03.03.2006, 11:43 |
|
Не зарегистрирован
|
Сделать хоть одну (главную) автосоздаваемую форму
или при "ручном" создании должна остаться хоть одна активная форма. |
|
pink_frog |
Отправлено: 03.03.2006, 12:11 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Там надцать этих автосоздаваемых форм. И они таки создаются, но не выводятся. Я полагаю, что до них просто дело не доходит, глюк где-то раньше.
И непосредственно после компиляции и сборки открывается все как надо.
А куда прередается управление после Application->Run() ? как найти? |
|
Guest |
Отправлено: 03.03.2006, 12:17 |
|
Не зарегистрирован
|
QUOTE |
А куда прередается управление после Application->Run() ? как найти?
|
Диспетчеру, а сообщения получает та форма, которая в данный момент активна (TScreen->Forms[0]) |
|
pink_frog |
Отправлено: 03.03.2006, 12:27 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Это форма, которая Main или не обязательно?
Строкой (TScreen->Forms[0]) можно передать имя формы в сообщение и посмотреть? (извините уж, если вопросы тупые)
И где этого самого диспетчера искать? |
|
olegenty |
Отправлено: 03.03.2006, 12:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
точку останова поставь на TAppication->Run(), и посмотри, доходит ли до туда прога. вообще, поотлаживай.
|
|
pink_frog |
Отправлено: 03.03.2006, 12:34 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
через эту точку она перескакивает, а вот чем она занимается дальше?... Виснет.. |
|
pink_frog |
Отправлено: 03.03.2006, 12:35 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Что удивляет меня больше всего: при компиляции работает-то как надо. Вот это почему происходит? Если бы вообще выбивало на одном и том же месте, было бы привычнее. |
|
olegenty |
Отправлено: 03.03.2006, 12:36 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
тогда смотри код главной формы. главной будет та, что создаётся первой.
|
|
pink_frog |
Отправлено: 03.03.2006, 12:39 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
А не может это быть из-за настроек билдера (типа там прога не совсем самостоятельная и нуждается в билдере)? хотя никаких сообщений с требованиями ресурсов нет... |
|
olegenty |
Отправлено: 03.03.2006, 12:41 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
нет, не может. но точно зависит от рук разработчика.
|
|
pink_frog |
Отправлено: 03.03.2006, 12:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Спасибо и на том... Вот бы мне эти руки разработчика. Я б его... |
|
olegenty |
Отправлено: 03.03.2006, 12:44 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ну на все методы главной формы воткни точки останова, и глянь, где всё тормозится.
|
|
pink_frog |
Отправлено: 03.03.2006, 16:51 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
Проблема вот в чем:
Когда запускаю из-под билдера (при компиляции) переменная Query->ParamCount = 3. Далее по условию цикл IF пропускается, все работает.
Когда запускаю экзешник отдельно от билдера эта переменная =0, поэтому заходим в цикл IF и виснем на строке
Почему эта переменная имеет разные значения?
Почему может не работать Query->Open?
|
|
Asher |
Отправлено: 03.03.2006, 17:07 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
В run->Parameters...
загляни
|
|
pink_frog |
Отправлено: 03.03.2006, 17:08 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
И Вам драссьте! там
Parameters
IBST IB 13148825
Что из этого следует?
Отредактировано pink_frog — 03/03/2006, 17:09 |
|
Guest |
Отправлено: 03.03.2006, 17:34 |
|
Не зарегистрирован
|
QUOTE |
В run->Parameters... загляни
|
Судя по постам это не параметры запуска приложения а параметры запроса.
QUOTE |
Почему эта переменная имеет разные значения?
Почему может не работать Query->Open?
|
Например потому что отсутствует сам текст запроса или запрос не проанализирован. А может не установлена связь с базой (IBST IB 13148825
). |
|
pink_frog |
Отправлено: 03.03.2006, 18:03 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 14
|
вот весь цикл:
CODE |
if(FirstTime && ParamCount()==0)
{
TQuery *Query = new TQuery(NULL);
Query->DatabaseName = ALIAS;
Query->SQL->Add("SELECT COUNT(*) FROM opers,res WHERE opers.id=res.opid AND opers.optype=110000 AND opers.posted='F' AND res.closedate<'"+DateToStr(Date())+"' AND opers.autor="+IntToStr(SysData->User->ID));
Query->Prepare();
Query->Open(); //-------------глючная строка
int Counter = Query->Fields->Fields[0]->AsInteger;
delete Query;
if(Counter>0)
{
Timer2->Enabled = true;
FirstTime = false;
}
}
|
Т.е. это не первый запрос. И логинимся нормально (логин/пароль ведь в базе!) |
|
Guest |
Отправлено: 03.03.2006, 18:46 |
|
Не зарегистрирован
|
QUOTE |
Программа не отвечает, висит только на панели задач.
...
Query->Open(); //-------------глючная строка
|
Запрос выполняется слишком долго, программа ждет ответа от сервера.
Выполнить этот запрос в другом средстве (так как TQuery, то SQLExplorer прокатит) и посмотреть результат.
Все, жо понедельника. |
|
Guest |
Отправлено: 03.03.2006, 18:49 |
|
Не зарегистрирован
|
Да, еще, проверьте блокировки. Может кто заблокировал запись/таблицу а Select ждет. |
|