我在一个串口上接收了一些数,是16进制的
接收的类型是OleVariant,我用STRING可以接得上
但是解析不了16进制
请问如何接收数据并解析成16进制啊?
接收的类型是OleVariant,我用STRING可以接得上
但是解析不了16进制
请问如何接收数据并解析成16进制啊?
解决方案 »
- 怎么上传图片到web空间上?
- 急急急!!!mdi子窗口关闭的时候,主窗口产生什么事件,并却返回此mdichild 窗体的name???
- ★送分帖,请 dabaicai、xianggang101、xiaokexinger三位朋友进入★
- 问个关于生成注册码时,获得CPU ID的问题
- 有无在对天津开发区感兴趣的程序员?
- ADOQuery在设置动态参数时的问题
- 有保存类型文件的高手请进,高分对待!!!
- WinExec在delphiXE中失效
- SOS 怎样报表的合计放在第一页的上面??????
- 向各位请教一个奇怪的问题,这个程序有啥问题?92大分送上!
- 全局函数放在那里
- 不知有多少人用Delphi在搞工控方面的开发,感觉如何?欢迎大家讨论!
function StreamToVariant(Stream: TStream): OleVariant;
var
p: Pointer;
begin
Result := VarArrayCreate([0, Stream.Size - 1], varByte);
p := VarArrayLock(Result);
try
Stream.Position := 0;
Stream.Read(p^, Stream.Size);
finally
VarArrayUnlock(Result);
end;
end;
procedure VariantToStream(const Data: OleVariant; Stream: TStream);
var
p: Pointer;
begin
p := VarArrayLock(Data);
try
Stream.Write(p^, VarArrayHighBound(Data,1) + 1);
finally
VarArrayUnlock(Data);
end;
end;
in:OleVariant
ar;array of byte
str;string;
begin
in:=mscomm1.input;
setlength(ar,mscomm1.inbuffercount)
ar:=in;
for I:=0 to inbuffercount-1 do
str:=str+IntToHex(ar[i],2); showMessage(str);end;
comin:OleVariant;
ar:array of byte;
str:String;
i: Integer;
begin
comin := MSComm1.Input;
System.SetLength(ar,MSComm1.InBufferCount);
ar := comin;
for I:=1 to MSComm1.InBufferCount do
begin
str := str + IntToHex(ar[i-1],2);
end; ShowMessage(str);
end;
这样不行!!!!!!!在 ar := comin ; 那里出错!!!
//comin := MSComm1.Input;取过以后inbuffercount为0了将这句放至后在
SetLength(ar,MSComm1.InBufferCount);
comin := MSComm1.Input;//这个地方
ar := comin;
for I:=1 to MSComm1.InBufferCount do
begin
str := str + IntToHex(ar[i-1],2);
end; ShowMessage(str);
comin:Variant;
ar:array of byte;
str:String;
i,b: Integer;
begin
MSComm1.InputMode := 1;
b := MSComm1.InBufferCount;
comin := MSComm1.Input;
System.SetLength(ar,b);
ar := comin;
for I:=1 to b do
begin
str := str + IntToHex(ar[i-1],2);
end; ShowMessage(str);
end;