내가이 클래스가 속성 TReportItem.GetTableName<TReportItem>
을; <>
은 TReportItem
을 상속하는 모든 클래스가 될 수 있습니다.오류가
하지만 때로는 내가 전화 : TReportItem.GetTableName
명령에서 LRttiType.GetAttributes
때로는 액세스 위반이 '컴파일'에 따라 달라집니다. 그것은 마법처럼 작동하고 멈 춥니 다. 나는 무슨 일이 일어나고 있는지 모른다. 누군가 나에게 힌트를 줄 수 있니?
문제는 GetAttributes
입니다.이 메서드를 사용하면 fiels, 메서드 등에서 특성을 가져올 수 있습니다. 액세스 위반이 발생합니다. 그것을 사용하기 위해 내가 켜거나 끌어야하는 지침이 있습니까?
내가 Shift + F9, 내가 단위의 모든 라인을 수정하고 F9에게GetAttributes
작품을 사용하여 컴파일하면 GetAttributes
는, AV 나 줄을 사용하여 컴파일하는 경우.
내 컴퓨터뿐 아니라 다른 8 명의 프로그래머도 동일한 문제가 있습니다. 델파이 XE. 내가 Rtti.pas에 imp := PPPointer(p)^^
에, 오늘 같은 AV를 시간 동안 동일한 문제를 겪고
function FindCtor(AttrType: TRttiInstanceType; CtorAddr: Pointer): TRttiMethod;
type
PPPointer = ^PPointer;
var
p: PByte;
imp: Pointer;
begin
for Result in AttrType.GetMethods do
if Result.CodeAddress = CtorAddr then
Exit;
// expect a package (i.e. DLL) import
p := CtorAddr;
Assert(p^ = $FF); // $FF $25 => indirect jump m32
Inc(p);
Assert(p^ = $25);
Inc(p);
imp := PPPointer(p)^^; //ERROR HAPPENS HERE
for Result in attrType.GetMethods do
if Result.CodeAddress = imp then
Exit;
Result := nil;
end;
'TReportItem.GetTableName'에 전화를 걸 수 있습니까? –
당신이 AV를 얻을 때,'LRttiType'은 어떤 가치가 있습니까? –
죄송합니다. AV 란 무엇입니까? –