拜托,任何人都可以为我转换此代码吗?
我对C++不太了解,因此我需要将此代码从C++转换为delphi:
template <typename DestType, typename SrcType>
DestType* ByteOffset(SrcType* ptr, ptrdiff_t offset)
{
return reinterpret_cast<DestType*>(reinterpret_cast<unsigned char*>(ptr) + offset);
}
谢谢...
最佳答案
转换实际上非常简单,但是您不能在Delphi中使用模板。它只是在指针上添加了偏移量,但是偏移量是以字节为单位指定的,而不是指针基本类型的倍数。
所以转换
ByteOffset<IMAGE_NT_HEADERS>(DosHeader, DosHeader->e_lfanew)
进入
PIMAGE_NT_HEADERS(PAnsiChar(DosHeader)+DosHeader.e_lfanew)
其他示例:
ExportDirectory := PIMAGE_EXPORT_DIRECTORY(PAnsiChar(DosHeader)+
NtHeader.OptionalHeader.
DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
functions := PDWORD(PAnsiChar(DosHeader)+ExportDirectory->AddressOfFunctions);
等等。