数组问题,急急急,大侠赶快来(200分)

  • 主题发起人 主题发起人 penggy
  • 开始时间 开始时间
P

penggy

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了一个数组: fields:array[0..7,0..15] of byte;
然后进行了赋值:
for i:=0 to 8 do
begin
fields[0]:=i;
end;

而我想在其他地方把fields[0]中的数值取出来,我怎么知道fields[0]中有几个元素
被赋值了,如上诉是有9个被赋值了。
在C语言中可以判断是否遇到/0,在delphi中怎么办?
 
你用动态数组啊!
var fields: array of integer;

Setlenght(fields)定义长度,
 
这个数据不是我定义。其实,我真正的问题是这样的。我在用SOCKET通信的程序。
我编SERVER端。CLIENT由别人开发,他是用vc。我们定义通信包的格式,在VC格式是这样的:
struct{
unsigned char fields[8][16];
}pubJ_socket;
我在delphi中对应的格式是:
type FIELD=array[0..7,0..15]of byte;
PUB_SOCKET=RECORD
Fields:FIELD;
end;
不知我这样对应是否正确。client传过来的是ascii码串,如fields[0]里面是0x30 0x31 0x33 ......
而且是不定长的,我该怎样把它转换成字符串如'0123....'。同时,在我发应答包时又怎样把
'0123....'转换成0x30 0x31......。

 
可以这样:
var
i: integer;
a: AnsiString;
begin
a := '';
for i:=0 to 15 do //将数字转换为字符串
begin
a := a + ord(fields[0]);
end;

a := '';
for i:=0 to 15 do //将字符串转换为数字
begin
fields[0] := chr(a[i+1]);
end;
end;

分数你就看着给吧,希望对你有帮助。
 
多人接受答案了。
 

Similar threads

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