如何在delphi中实现用IEEE754(4字节二进制浮点数格式)规约的电表的数据显示?求指教,在线等!!!
解决方案 »
- GetModuleInformation
- 大家帮忙看看我做的这个编号自动增加的小程序错误在哪??
- 根据窗口句柄,如何对组件进行编程?高手作答!!!老急了!!!!!!!!!
- 找工作帖——12月16日 麻烦版主给保留五天,五天后一定结帖
- 纪录插入位置问题,来着有分!!1
- 各位大侠:如何将多个文件打包成一个文件????
- 在线等待:50分求设计BUTTON的精美BMP图片,最好图片越多越好。
- 寻求一个函数!
- 谁有免费的RainXP控件,发给我一个好吗?
- 菜鸟提问:如何获取程序的路径
- 商品条码(条形码)是怎么设计的?
- 不显示删除回复显示所有回复显示星级回复显示得分回复 跪求高手啊,我每次按了ctrl+f2也就是program reset的时候,都会弹出下面的对话框,然后就必
TSingleRec = record
case Integer of
0:(Value:Single);
1:(bLL,bLH,bHL,bHH:Byte);
end;或var
bArray : array [0..3] of byte;
aFloat : Single;
begin
bArray[0] := ..
bArray[1] := ..
...
aFloat := PSingle(@bArray)^;
end;注意高低位顺序,电脑中的字节顺序是低到高
var
Ex,i:Byte;
m:Single;//Cardinal;
recnum:Extended;
begin
m:=1;
Ex:=(firstnum shl 1)+(secnum shr 7);
if ((secnum shr 7)=1) then
secnum:=secnum
else secnum:=secnum+128;
if (Ex<=(126+24-31)) then
begin
recnum:=0;
end
else if(Ex<(24+126))then
begin
for i:=1 to (24+126-Ex) do//(i:=(24+126-Ex);i>0;i--)
begin
m:=m*2;
end ; recnum:=(secnum*$10000+thirdnum*$100+forthnum)/m;
m:=1; end
else if(Ex>(24+126))then
begin
for i:=1 to (Ex-24-126) do//(i:=Ex-24-126;i>0;i--)
begin
m:=m*2;
end; recnum:=(secnum*$10000+thirdnum*$100+forthnum)*m;
m:=1;
end
else if(Ex=24+126) then
recnum:=secnum*$10000+thirdnum*$100+forthnum;
m:=1;
dbds:=recnum;
end;问题我解决了,这是我编的,不过还是谢谢了!!
TXXXFrame = packed record
StartFlag: Byte; //68H
A: Integer; //整数
B: Single; //浮点数
//其他字段定义...
EndFlag: Byte; //16H
end;
PXXXFrame = ^TXXXFrame;二、定义一个接收数据的缓冲区:
FBuffer: array [0..255] of Byte; 三、使用:
var
P: PXXXFrame;
I: Integer;
j: Single;
begin
P := @FBuffer;
//取整数
I := P.A;
//取浮点数
J := P.B;
//其他处理end;