Текущий архив: 2004.11.28;
Скачать: CL | DM;
ВнизBreakpoint не работает. Найти похожие ветки
← →
olookin © (2004-11-15 11:01) [0]Вход в процедуру Button1Click не выполняется (нет останова на брекпойнте), хотя двойной клик на кнопку Button1 в дизайн-тайме выбрасывает имеено на эту процедуру. Более того, при нажатии на кнопку что-то все-таки выполняется, но что - остается загадкой. Этому не предшествуют работы с памятью, с указателями или с чем-либо еще, могущим вызвать непонятное поведение. Ошибок также не возникает. Отладчик успешно работает с брекпойнтами в других модулях. В этом же модуле отладчик не останавливается ни на одном брекпойнте, куда бы он не был поставлен.
← →
Плохиш © (2004-11-15 11:05) [1]небось в модуле {$D-} {$L-} понаставил? в другом модуле все обработчики по-перекрывал, а inherited позабыл.
А так жди возвращения телепатов из отпуска.
← →
olookin © (2004-11-15 11:12) [2][1] Плохиш © (15.11.04 11:05)
1. Директив, кроме {$R *.DFM}, нет никаких.
2. Обработчики не перекрывал, так как вообще не знаю как это делать.
Про телепатов - как я могу еще задать свой вопрос? Модуль выставить? Там ничего интересного нет.
← →
uny © (2004-11-15 11:17) [3]может в этой процедуре ничего не делается. добавить какой нибудь beep и посмотреть
← →
Плохиш © (2004-11-15 11:20) [4]
> olookin © (15.11.04 11:12) [2]
Попробуй сделать "Build all"
← →
olookin © (2004-11-15 11:22) [5][3] uny © (15.11.04 11:17)
Например, в другой форме ставлю брекпойнт на выражение:
procedure TEQAPbase.MDFCorrector1Click(Sender: TObject);
begin
CorrectorForm.Show; //breakpoint
end;
У "странной" формы CorrectorForm есть событие OnShow. Однако даже такой брекпойнт вызывает переход не в процедуру CorrectorForm.OnShow, а в событие TEQAPbase.EQAPbaseOnMessage. Ставя брекпойнт на появление любой иной формы проекта, или вообще в любое место, исключая "странный" модуль, я получаю желаемый результат (т.е. функционирование брекпойнта).
← →
olookin © (2004-11-15 11:23) [6][4] Плохиш © (15.11.04 11:20)
Попробуй сделать "Build all"
Не помогло.
← →
Плохиш © (2004-11-15 11:37) [7]
> olookin © (15.11.04 11:22) [5]
А ты *nix не злоупотребляешь? Скорее всего у тебя в файле перевод строки из одного символа, проверь и замени все на #13#10.
← →
GuAV © (2004-11-15 11:37) [8]Уверен что именно эта версия модуля подключается, может копия какая ?
← →
olookin © (2004-11-15 12:40) [9][8] GuAV © (15.11.04 11:37)
Уверен на 100%.
[7] Плохиш © (15.11.04 11:37)
А ты *nix не злоупотребляешь? Скорее всего у тебя в файле перевод строки из одного символа, проверь и замени все на #13#10.
Все писано прямо в дельфях под Win2000. Разве только то, что я просто скопировал когда-то код из другой формы, вставил в нынешнюю "странную", и переопределил обработчики событий на компоненты в "странной" форме? Но такое я делал неоднократно с другими модулями и не встречал никаких проблем.
← →
Pentium133 © (2004-11-15 13:49) [10]
>[8] GuAV © (15.11.04 11:37)
>
> Уверен на 100%.
Откуда такая уверенность. В заголовке окна какой путь прописан?
← →
Плохиш © (2004-11-15 14:09) [11]
> olookin © (15.11.04 12:40) [9]
> просто скопировал когда-то код из другой формы, вставил
> в нынешнюю "странную",
Так в hex посмотреть не судьба?
← →
Pentium133 © (2004-11-15 14:17) [12]99% он трасирует копию файла. У меня такое бывало. И ещё с пеной у рта доказывал что "нет, это не копия!"
← →
GuAV © (2004-11-15 14:35) [13]Вот-вот... всё же пройдись поиском и прибей все копии, и dcu тоже оставь один .pas
← →
Sirakuz © (2004-11-15 15:36) [14]У тебя брейкпойнт активный? Всысле после компиляции рядом с этим кодом появляются синие кружочки? Если да и если ты точку останова ставишь на одном из этих кружочков то, возможно, обработчик нажатия переопределяется в другом месте; если нет - то дебагер не "подхватил" этот файл или не откомпилил этот код по различным причинам.
← →
olookin © (2004-11-15 17:18) [15][12] Pentium133 © (15.11.04 14:17)
99% он трасирует копию файла. У меня такое бывало. И ещё с пеной у рта доказывал что "нет, это не копия!"
Итак, еще раз (а то ошибка сервера, а затем и несколькочасовое выключение инета похерило мое предыдущее сообщение). Физически удалил pas-файл. Dcu оставил. Нажимаю Ctrl-F12 и выбираю похеренный модуль. Разумеется, сообщение Cannot open file... По-моему, это доказывает, что компилирую я именно тот модуль, какой и вижу, а не копию оного...
[11] Плохиш © (15.11.04 14:09)
Так в hex посмотреть не судьба?
Объясни пожалуйста, что именно мне в Hex смотреть...
[14] Sirakuz © (15.11.04 15:36)
Активный (в том смысле, что не считает строку мертвой), и нигде ничего не переопределено у меня.
← →
Verg © (2004-11-15 18:17) [16]Название модуля, название файлов pas и dfm - все равны?
← →
olookin © (2004-11-15 18:21) [17][16] Verg © (15.11.04 18:17)
Все одинаковое.
← →
Sirakuz © (2004-11-15 18:22) [18]Остановись в любом другом месте
Evaluate value (Ctrl-F7)
Туда впиши примерно это:
@MainFormName.Button1.OnClick
Там будет указатель на обработчик
Дальше жмёшь Alt-Ctrl-C - Вызываешь окно CPU;
Кликаешь в ассеблеррный листинг; Ctrl-G - Перейти на адрес. И вводишь в это окно свой адрес, который указатель на обработчик. Смотришь совпадает ли это с твоим исходным кодом. Вобщем анализируешь.
← →
Verg © (2004-11-15 18:25) [19]
> Например, в другой форме ставлю брекпойнт на выражение:
>
> procedure TEQAPbase.MDFCorrector1Click(Sender: TObject);
> begin
> CorrectorForm.Show; //breakpoint
> end;
А где и как она создается? CorrectorForm.
← →
olookin © (2004-11-15 18:28) [20][18] Sirakuz © (15.11.04 18:22)
Ну, я не настолько крут, чтобы реализовать это, даже если мне предварительно все разжуют.
[19] Verg © (15.11.04 18:25)
В дизайнере создана. Не динамически т.е.
← →
Плохиш © (2004-11-15 18:29) [21]
> olookin © (15.11.04 17:18) [15]
> [11] Плохиш © (15.11.04 14:09)
> Так в hex посмотреть не судьба?
>
> Объясни пожалуйста, что именно мне в Hex смотреть...
Открываешь pas-файл и смотришь: В файле должны встречаться только сочетания кодов #13#10, а не по-отдельности #13 или #10.
← →
Verg © (2004-11-15 18:30) [22]
> В дизайнере создана. Не динамически т.е.
Ну так покажи как она создана.
В файле dpr это должно быть.
← →
olookin © (2004-11-15 18:35) [23][21] Плохиш © (15.11.04 18:29)
Не встречается по отдельности.
← →
olookin © (2004-11-15 18:37) [24][22] Verg © (15.11.04 18:30)
Это показать?
uses
...
lookin10 in "lookin10.pas" {CorrectorForm},
...
;
{$R *.TLB}
{$R *.RES}
begin
Application.Initialize;
...
Application.CreateForm(TCorrectorForm, CorrectorForm);
...
Application.Run;
end.
← →
Плохиш © (2004-11-15 18:42) [25]Ну что тут скажешь?
Выкладывай куда-нибуть свой "lookin10.pas", время будет посмотрим.
← →
olookin © (2004-11-15 18:43) [26]Хе-хе. Удалил я нафиг этот модуль и создал заново пустой с теми же именами. Брекпойнт заработал.
← →
olookin © (2004-11-15 19:05) [27]А вот тут я совершенно ничего не понимаю. Я нашел строку, комментирование которой включает таки брекпойнты. Строка находится в процедуре, которая не вызывается по нажатию на кнопку или из OnShow формы. Равно как не вызывается и при создании формы. Нигде, короче, не вызывается. Строка выглядит так:
cc:="";
причем cc: array [0..65535] of char;
Поскольку я ничего не понял, то прошу рассказать мне, где тут ошибка и в чем она заключается. Сразу скажу, что неоднократно приравнивал пустой строке массивы Char и ни разу не видел такой реакции. Более того, в еще одном модуле массив такой же размерности, и туда по брекпойнту захожу без проблем.
← →
Lin7 (2004-11-15 19:30) [28]У меня подобные глюки пару раз вылезали под D7 (WinXP) + иногда проект просто не компилился - D7 вываливала ошибку. Помогало закрыть+открыть проект или перегрузить D7.
← →
Alex_Petr © (2004-11-16 01:01) [29]Было подобное ( тоже D7 (WinXP)).
Помогло:
Создал новый unit и вручную (Copy/Paste) перенес весь код.
← →
olookin © (2004-11-16 08:33) [30][29] Alex_Petr © (16.11.04 01:01)
Помогло: Создал новый unit и вручную (Copy/Paste) перенес весь код.
А мне вот как раз это не помогло к сожалению.
Страницы: 1 вся ветка
Текущий архив: 2004.11.28;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.041 c