拜托,任何人都可以为我转换此代码吗?

我对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);

等等。

10-03 00:53