Delphi指针算术

标签 delphi

这行代码应该怎么写才能编译通过

MoveMemory(poleFileDescriptorW
         , (oleDataPointer + SizeOf(oleFileDescriptorW) *Index + 4)^
         , SizeOf(oleFileDescriptorW));

特别是这部分

(oleDataPointer + SizeOf(oleFileDescriptorW)*Index + 4)^

我只想将指针移动 SizeOf(oleFileDescriptorW)*Index + 4 字节

变量定义为:

pOLEFileDescriptorW : ^FILEDESCRIPTORW;
oleDataPointer : Pointer;

最佳答案

转换为整数类型,进行数学计算并转换回来。

我通常使用 Cardinal,但我认为这不适用于 64 位编译器。

指针(NativeInt(oleDataPointer) + SizeOf(oleFileDescriptorW)*Index + 4)

关于Delphi指针算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303880/

相关文章:

delphi - Firemonkey 样式设计器中另一个列表框中的列表框

windows - 写入系统驱动器 C : without admin rights in Delphi 上的文件

delphi - 如何简洁地检查多个编辑框中的任何一个是否已更改为原始值?

delphi - 如何在Delphi中捕获DBGrid中的滚动事件

delphi - 将 ASM 与非 asm 代码组合(或需要 SwapInt64 ASM 函数)

Delphi {$IFDEF CONSOLE} 问题

delphi - 将所有选定的项目从 ListView 复制到 ListView 2

delphi - 是否可以在没有.DFM 的情况下使用数据模块?

delphi - 结果始终相同的 SortCompareFunction 会创建 EAccessViolation

Delphi 10.4 本地化问题