Delphi 自定义数组类型取值问题,每次取到的数组都是0

Delphi 自定义数组类型取值问题,每次取到的数组都是0,第1张

SetLength(myarr,1) //设置数组长度为1,实际上只能存一个值

myarr:=(htpr1 as iMO_Manager).GetNowRCDataByMONumber('SFD59818-A')

s:=myarr[0].PART_NO//这里也只取了[0],就只是第一个值

ShowMessage(s)//这里肯定永远都只能是前面取的长度为1的数组的第一个值

不知道你GetNowRCDataByMONumber('SFD59818-A')返回的到底是个什么东西

很简单...

假设你的数组变量为 a,并且下标从 0 开始:

var

a: YourArrayType

p: PInteger

begin

...

p := @a[1]//指向第二个字节

if p^ = $01000080 then // Intel 处理器的整数高位在高地址区,所以要反过来

...

end

原理就是:4个字节是一个整数的空间,直接比较一个整数变量和一个常数是否相等

如果你要判断的字节数超过8个,或者($80,$00,$00,$01)是变化的,这个方法就不行了,要用 CompareMem 来比较,速度要慢一些:

var

a: YourArrayType

b: YourConst

begin

...

if CompareMem(@a, @b, SizeOf(b)) then

...

end

delphi的数组定义是

var

a : array [0..10] of integer

这样就可以定了一个数组a,要访问的话 a[1] :=2a[2]:=3这样去赋值


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/367190.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存