怎样处理variant数据放入 byte数组中,谁有例子,救急(200分)

  • 主题发起人 主题发起人 xinshou89855219
  • 开始时间 开始时间
X

xinshou89855219

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我在开发一个串口通讯软件,用的是MSCOMM控件,想把串口的数据以二进制方式放入一个BYTE数组中。
 
参考下面函数,Byte可以从Stream读取
procedure VariantToStream (const v : OleVariant;
Stream : TMemoryStream);
var
p : pointer;
begin

Stream.Position := 0;
Stream.Size := VarArrayHighBound (v, 1) - VarArrayLowBound (v, 1) + 1;
p := VarArrayLock (v);
Stream.Write (p^, Stream.Size);
VarArrayUnlock (v);
Stream.Position := 0;
end;

procedure StreamToVariant (Stream : TMemoryStream;
var v : OleVariant);
var
p : pointer;
begin
v := VarArrayCreate ([0, Stream.Size - 1], varByte);
p := VarArrayLock (v);
Stream.Position := 0;
Stream.Read (p^, Stream.Size);
VarArrayUnlock (v);
end;
 
没人知道嘛,晕哟
 
指针强制变换!再 Move!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部