gpt4 book ai didi

delphi - 如何从内存指针中一个元素一个元素地顺序读取数据?

转载 作者:行者123 更新时间:2023-12-02 06:02:58 26 4
gpt4 key购买 nike

我想使用 FMOD 库中的一个函数,该函数将数据锁定在给定声音的内存中并返回指向该数据的指针,因此可以对数据进行一些读取或修改:

function FSOUND_Sample_Lock(Sptr: PFSoundSample; Offset: Integer; Length: Integer; 
var Ptr1: Pointer; var Ptr2: Pointer; var Len1: Cardinal;
var Len2: Cardinal): ByteBool;

ptr1和ptr2是指向内存的指针,len1和len2是内存中数据的长度。

如何在每次读取下一个 SmallInt 时迭代 ptr1 处的数据?

我使用的是 Delphi 7,因此 {$POINTERMATH ON} 不起作用

最佳答案

在现代 Delphi 中,带有 {$POINTERMATH ON} ,您可以像这样索引数组的元素:

PSmallint(ptr1)[i]

如果您的 Delphi 中没有 $POINTERMATH,或者您不想使用它,您可以这样做:

type
TSmallintArray = array[0..MaxInt div SizeOf(Smallint)-1] of Smallint;
PSmallintArray = ^TSmallintArray;

然后使用以下方式访问元素:

PSmallintArray(ptr1)[i]

就我个人而言,我从未发现后一种方法符合我的口味,但选择权在您。

关于delphi - 如何从内存指针中一个元素一个元素地顺序读取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com