问几个有关变量类型转换基础问题:(20分)

  • 主题发起人 主题发起人 dazzling
  • 开始时间 开始时间
D

dazzling

Unregistered / Unconfirmed
GUEST, unregistred user!
1.buf:array[1..20] char和p:PCHAR如何相互转换?
2.BUF中的数据如何填充到数据结构中?数据结构中的数据又如何导出到BUF中?
 
1.
如果只是让P指向Buf,很简单: P:=@Buf[1]
即可。
如果要为P分配空间,并将Buf的内容复制到P所指向的空间:
GetMem(P,SizeOf(Buf))
//不要忘了用完了之后FreeMem(P);
Move(Buf[1],P^,SizeOf(Buf));

2.
用Move方法就可以:
var
Buf:array[1..20]of char;
P:TPoint
//结构变量
begin
P.X:=100;
P.Y:=567;
Move(P,Buf[1],SizeOf(P));
...

反过来也一样。
 
function TMainForm.Getbody(H2head:String):TagCOMM_HEAD;
var
tmp:TagCOMM_HEAD;
//tt:string;
begin
copymemory(@tmp,pchar(H2head),86);

procedure TMainform.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
len:word;
//bodylen:word;
bodystring:string;
Ffwlx,Fydhm,Fywlx,Fyyd,Fyyy:String;
//buf:array[1..256] of char;
//buf1:array[1..86] of char;
ss,ss1:String;
Fhead,Fhead1:TagCOMM_HEAD;
Vbz,Vccm,Vzhybbz:string;
begin
try
ss:=Socket.ReceiveText;
//FillChar(buf1,sizeof(buf1),' ');
//Socket.ReceiveBuf(buf1,86);
//ss:=strpas(@buf1);
 
如何重定义数组长度?
比如
var Buf:array[1..20]of char;
如果执行中觉得此位数不够用,如何重新定义其下标?
 
如何重定义数组长度?
比如
var Buf:array[1..20]of char;
如果执行中觉得此位数不够用,如何重新定义其下标?

var Buf: array of char;
用的时候用SetLength(Buf,长度);
 
后退
顶部