- Код: Выделить всё
SimpleProcOfObj=procedure of object;
tm:tmethod;
....
tm.Data:=obj{указатель на нужный object};
tm.Code:=ppointer(GDBPlatformint(PVMT{указатель на VMT})+GDBPlatformint(MetodAddr{смещение метода в VMT}))^;
SimpleProcOfObj(tm);
Метод без параметров. Нужно для реализации паскалеподобного скрипта, поэтому напрямую вызывать не катит
update:
возможно дело в неправильном вызове конструктора, он тоже вызывается из скрипта:
под вин64 насколько понял надо так:
- Код: Выделить всё
mov rcx,[obj]{указатель на выделенную под object память}]
mov rdx,[p]{указатель на VMT}]
call tm.Code{в tm.Code лежит адрес конструктора}
под лин64 работало так:
- Код: Выделить всё
mov rdi,[obj]
mov rsi,[p]
call tm.Code