delphi - 我应该使用哪一个来为 Delphi、NativeUInt 或 NativeInt 进行 64 位指针数学运算

标签 delphi pointers

由于delphi有64位编译器,所以我们应该使用64位指针。

所以想知道如果我们使用nativeint 或nativeuint 有什么区别。例如,

我应该使用

Pointer(NativeUInt(Pointer(Buffer)) + LongWord(datawrote))^,

Pointer(NativeInt(Pointer(Buffer)) + LongWord(datawrote))^,

这有关系吗?哪种风格更好?

最佳答案

最简单的方法是将指针转换为PByte。然后你可以对其进行算术:

PByte(Buffer) + offset

该表达式的类型为 PByte,因此您可能需要将其转换回其他指针类型。

作为一般规则,指针不是整数,您应该抵制将它们转换为整数的诱惑。让指针成为指针几乎总是最好的。您始终可以对 PAnsiCharPWideCharPByte 执行指针算术,对于其他指针类型,您可以使用 {$POINTERMATH ON}启用指针算术。

关于delphi - 我应该使用哪一个来为 Delphi、NativeUInt 或 NativeInt 进行 64 位指针数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453644/

相关文章:

Delphi注解+枚举集。不变的表达?

xml - 如何将数据从XML文件插入3个不同的表中

android - 代码突然崩溃

c - 指针赋值被忽略

c - C中打印字符数组错误

ios - 如何让 TListBoxItem 的 ADetail 附件突出显示当前 TListBoxItem

delphi - 我如何使用 delphi xe2 ios firemonkey 的 http.get?

delphi - 如何省略 128C 条形码中的前导 0?

c - 不太确定,memcpy 上有段错误吗?

go - 如何正确检查 io.Reader 是否为零?