又一个动态数组的问题。(100分)

  • 主题发起人 主题发起人 LeonSu
  • 开始时间 开始时间
L

LeonSu

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.MyGetData(Sender: TObject
Buffer: Pointer;
BufferLength: Word);
var
viewString: String;
i: integer;
rbuf:array of byte;
begin
viewstring:='';
SetLength(rBuf,BufferLength);
move(buffer^,rbuf,BufferLength);
Exit;
for i:=0 to BufferLength-1 do
begin
viewstring:=viewstring+ IntToHex(rbuf,2)+' ';
//每次在这句出现非法操作,如果改为静态数组就没问题
end;
end;
 
move(buffer^,rbuf,BufferLength);
rbuf是动态数组,这么做达不到你的效果吧?
 
move(buffer^,rbuf[0],BufferLength)
这里要传递rbuf实际存储位置的首地址,要用rbuf[0]
前几天刚解决过类似问题,呵呵
如果rbuf的存储地址是Addr1,而分配内存后rbuf[0]的地址是Addr2
则move要求的是Addr2, 而用rbuf的话传递的是Addr1,rbuf[0]才是需要的Addr2
静态数组,名称和首元素的地址是一样的,所以可以
 
avenir, you are right.
tks very much!
 
呵呵,你看我的信息,前两天刚用这混了100多分,惭愧
 
TO:AVENIR
没关系呀!重要的不是分,而是问题,而且,我去搜索过了,就是因为没找到我要的答案,
所以才提问出来。
况且知识懂得多的人,他的分就升得快,这也是正常的,不用惭愧,这是你应该得的。
我应该好好向你学习才对。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
551
import
I
后退
顶部