很急?银行通信问题,word类型转为array[0..1] of char的问题(100分)

  • 主题发起人 主题发起人 qinghe7
  • 开始时间 开始时间
Q

qinghe7

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道为什么R1 =record
word1:word
end
length(R1)=2
但是R2 =record
word1:word
byte1:byte;
end
length(R2)<>3 而是4,不是为什么
所以就想把word变为array[0..1]of char
如$ABCD 转为char[0]:=#AB ,char[1]:=#CD
不知如何转化,请大侠们帮忙,谢谢
 
R2 =packed record
word1:word;
byte1:byte;
end

加上packed就是3了。
 
packed是什么
怎么array of char没有多呢
 
delphi 编译器默认是字对齐的(为了运行速度),所以byte类型也占二字节.packed就是紧凑储存,byte类型占一字节,不占多余位置
 
现在我做的银行的通信系统
他们的数据格式已经定义好了
现在我要和他们通信就必须用紧凑储存,我应该怎么办
就如
R =record
cardId:array[0..10] of char;
year:word;
month:byte;
day:tyte;
money:array[0..7] of char;
end;
这个结构我应该如何定义呢,谢谢
 
还有我用Twinsockserver来传输的的
之前是array of char 变为Tmoneystream 在变为record 可以是可以但是太慢了,
不是大侠们可有好的建议
 
R =record
cardId:array[0..10] of char;
year1:byte;
year2:byte;
month:byte;
day:byte;
money:array[0..7] of char;
end;
 
year 用byte 肯定不行啊
现在我知道了
R =packed record //加packed就可以了
cardId:array[0..10] of char;
year:word;
month:byte;
day:tyte;
money:array[0..7] of char;

现在就是数据传输太慢了,大家有什么好的建议
 
数据传输太慢不关数据类型的事,array of char和record 的传输速度基本一样的,检查你的网络吧
 
哈哈,这位叫怕死卡感叹号的朋友啊,象楼主这样的道行,数据传输慢与数据类型可能存在大大的关系。假如这个 R 是乘以 10000 以上的话,你看到的是数据流量大,他看到的就是数据传输慢,你可以在几毫秒处理掉,他要几分钟,握手都要比你多几倍。道不同,不能与谋。这种数据类型,在我的眼里看到的就是
r=record
x:array[0..22]of byte
end
在他的眼里不仅看到了word,还看到了char和byte,这就是差别,虽然都一样。哈哈。可想而知,你只要几毫秒的处理,他不花上几分钟就不叫处理!
 
同意flamingo,我在处理和c交换数据不用record,直接array of char;或pchar;
再来一个转换函数。
 

Similar threads

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