誰能解決:有關Delphi中動態數組的問題(此問題滿分相送)

LiangWu25 2003-09-11 04:10:55
我最近在用Delphi寫串口通信的程序,因為要向串口緩沖區寫入數據,所以碰到這樣的一個問題:
有一個Buffer,我先定義為動態數組,再SetLength,依次給各元素賦值,誰知把這個動態數組寫到緩沖區后,我用監聽軟件測到我所發的值居然不是我寫入的值:
例:
Var
Buffer1:Array of Char;
Buffer2:Array[0..2] of Char;
num:Integer;
begin
Setlength(Buffer1,3);
Buffer1[0]:=#$00;
Buffer1[1]:=#$01;
Buffer1[2]:=#$02;

Buffer2[0]:=#$00;
Buffer2[1]:=#$01;
Buffer2[2]:=#$02;
If InitialPort then
Begin
If WriteFile(hcom,Buffer1,High(Buffer1)+1,cardinal(num),over) Then
ShowMessage(inttostr(num));

End;
ClosePort;
end;
監聽到我寫入:90 37 BD

如果程序不變,只把寫入Buffer1改為Buffer2的話,值就正確:00 01 02
但實際寫程序過程中,有些情況我不可能預先定義好靜態數組,只能定義為動態數組,那該如何做才能寫入正確的值呢?
...全文
43 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiangWu25 2003-09-15
  • 打赏
  • 举报
回复
有沒有搞錯,這篇帖子怎么結不了?
LiangWu25 2003-09-15
  • 打赏
  • 举报
回复
To lxpbuaa(桂枝香在故国晚秋):
Thanks!
FrameSniper 2003-09-13
  • 打赏
  • 举报
回复
揭贴吧!
dawnming 2003-09-13
  • 打赏
  • 举报
回复
帮你up 一下
我原本不是一头猪
cmain83 2003-09-13
  • 打赏
  • 举报
回复
楼上的方法可以.

在这种情况下, 最好用
PChar 来记录..
hiflower 2003-09-12
  • 打赏
  • 举报
回复
楼上正确。
lxpbuaa 2003-09-12
  • 打赏
  • 举报
回复
将WriteFile中的第一个“Buffer1”改为Buffer1[Low(Buffer1)]再看看结果是否正确。

—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧