Първоначално публикувано от
kamenf Това беше условно - няма да намериш тези дефиниции - затова казах "скрито". Но можеш да погледнеш с CPU дебугера асемблерския код на въпросното присъединяване или сравнение и после по адреса измъкнат от там да инсталираш хардуерен брейкпойнт по запис в памет и така да хванеш кой я променя.
Жалко, щеше да е много по-лесно, ако не беше "скрито".
С асемблер не съм се занимавал от 1990г. и ще те помоля за "малко" помощ.
Ето какво ми дава CPU дебугера:
Код:
problem.pas.743: TestSet:=[];
00A252CC A1BC63A200 mov eax,[име_на_процедурата + $2CC8]
00A252D1 8945C4 mov [ebp-$3c],eax
problem.pas.744: TestSet2:=[];
00A252D4 66A1BC63A200 mov ax,[$00a263bc]
00A252DA 668945BE mov [ebp-$42],ax
problem.pas.745: TestSet3:=[];
00A252DE A1BC63A200 mov eax,[име_на_процедурата + $2CC8]
00A252E3 8945BA mov [ebp-$46],eax
problem.pas.746: TestSet5:=[];
00A252E6 8B05E063A200 mov eax,[име_на_процедурата + $2CEC]
00A252EC 8945B1 mov [ebp-$4f],eax
00A252EF 8A05E463A200 mov al,[име_на_процедурата + $2CF0]
00A252F5 8845B5 mov [ebp-$4b],al
Код:
var
TestSet= set of (t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,
t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32);
TestSet2= set of 1..15;
TestSet3= set of 1..16;
TestSet5= set of 1..39;
Проблема е при "problem.pas.743: TestSet:=[];" и "problem.pas.745: TestSet3:=[];"
Предполагам, че това "[име_на_процедурата + $2CC8]" е някакъв относителен адрес за мястото, където се намира "[]", но:
Как "да инсталирам хардуерен брейкпойнт по запис в паметта" при Delphi 5? (Никога не съм използвал тази възможност и дали ще може при Delphi 5)
Какъв е адреса на "[]"?