Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];




Вниз

Debug & properties evaluation 


oomneeq   (2002-01-18 18:57) [0]

А по русски - дебугер может отображть значение пропертей
(в Watch,Evaluate и мышкой при наведении в исходнике)
Насколько корректно он себя ведет в случае когда получения значения проперти сопряжено с созданием объекта.
Создает?!
Если да, то это может оказываться совсем не кстати.

type YYY=class
....
function YYY.GetXXX:TComponent;
begin
if not Assigned (FXXX)
then FXXX:=TComponent.Create(...);
end;
.....
property XXX: TComponent; read GetXXX;
...
end;

Я вот так и не осознал, но сдается мне, с этим у него нечисто..
У меня один такой FXXX был не нилом (причем непросто не нилом, а очень похоже,что корректно созданым (Debugger"ом, как я теперь подозреваю, т.к. XXX вероятно торчала в окне Watch где то выше от FXXX)) уже в на begin"e YYY.Create.
Я так неуверенно, потому что ситуацию уже не воспроизводил, а по памяти излагаю. А мысль пришла с запозданием :-)

Какие наблюдения и/или опыт у вас?



paul_shmakov   (2002-01-19 04:05) [1]

абсолютно все верно. дебагер вызовет функцию GetXXX для получения значения свойства, а уж что GetXXX сделает для возврата значения - это ее дело. пусть хоть с банком через интернет соединяется и состояние счета получает :) все честно.



oomneeq   (2002-01-19 08:30) [2]

Дела интересные конечно.
Только что не поленился, проверил по простому - в GetXXX
cчетчик наращивать.
Пускаю дебагер,
навожу мышкой на XXX раз - в счетчике - единичка
убираю,навожу мышкой два - двойка
Заношу в Watch - уже тройка.
Нехорошо это - не должон бы отладчик влиять на данные без ведома
отлаживающего.
Я бы сделал эту возможность опциональной.
Так что парни, поосторожнее с отладкой пропертей!



paul_shmakov   (2002-01-20 02:24) [3]

Я бы сделал эту возможность опциональной.
а эта возможность и так опциональна :)
Editor Options\Code Insight\Tooltip Expresion Evalution

Нехорошо это - не должон бы отладчик влиять на данные без ведома
отлаживающего.

а как же ему иначе работать? за удобство приходится платить повышенным вниманием



oomneeq   (2002-01-20 21:58) [4]

Я говорил про возможность вычисления значения пропертей на дебуге
ведь именно эта возможност потенциально опасна тем что можете менять данные программы без явного выполнения кода (например, программа стоит в точке останова) - т.е. твой код выполняется самим же отладчиком изподтишка, в то время как программа стоит.
И такое выполнение ты уже не отладишь!
Я б хотел иметь возможность это отключать, хотя допускаю что это может быть иногда удобным.



vedmed   (2002-01-21 09:06) [5]

"возможность вычисления значения пропертей на дебуге" устанавливается в Tools\Debugger options\General\Allow function calls in new watches



oomneeq   (2002-01-28 18:56) [6]

>"возможность вычисления значения пропертей на дебуге"
>устанавливается в Tools\Debugger options\General\Allow function
>calls in new watches

Похоже на то, но однако же не оно.
Во всяком случае у меня эта птица не включена, а все вышеописанное происходит.
Думаю, что эта установка влияет на
повторный вызов функции, т.е. для каждого нового занесения исследуемого значения в Watch.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.018 c
3-32126           Натик                 2002-01-15 14:57  2002.02.11  
Можно ли выяснить на каком столбце DBGrid щелкнули мышкой.


14-32316          Гриф                  2001-12-19 10:22  2002.02.11  
Возраст призывника


14-32347          Ross                  2001-12-20 20:32  2002.02.11  
RX lib


1-32234           Andger                2002-01-27 15:23  2002.02.11  
Delphi виснет при палитре > 16 цветов


1-32205           Priz_Datiy            2002-01-24 22:44  2002.02.11  
операции с реестром