一个简单的问题incompatible types:'array'and 'string'.(60分)

  • 主题发起人 主题发起人 cc007sy
  • 开始时间 开始时间
C

cc007sy

Unregistered / Unconfirmed
GUEST, unregistred user!
偶建了一个数组
COM_HEAD=record
TXN_CODE:array[1..7] of char;
RET_CODE:array[1..4] of char;
REC_NUM:array[1..4] of char;
TXN_TYPE:array[1..1] of char;
TXN_DATE:array[1..8] of char;
TXN_BNCH:array[1..4] of char;
TXN_TLR:array[1..4] of char;
TXN_TERM:array[1..4] of char;

然后用一个函数从一个字符串中取职,函数如下
function getstringbyindex(buffer:string;index:integer;len:integer):string;
var
return:string;
i:integer;
begin
return:='';
for i:=index to index+len-1 do
begin
return:=return+char(buffer);
end;
result:=return;
end;

然后我取的时候是这么写的
var
s:string;
begin:
s:='dfasssssssssohoijhoidjsafjijdso';
com_head_rec.TXN_CODE:=getstringbyindex(s,1,7);
com_head_rec.RET_CODE:=getstringbyindex(s,8,4);
com_head_rec.REC_NUM :=getstringbyindex(s,12,4);
com_head_rec.TXN_TYPE:=getstringbyindex(s,16,1);
com_head_rec.TXN_DATE:=getstringbyindex(s,17,8);
com_head_rec.TXN_BNCH:=getstringbyindex(s,25,4);
com_head_rec.TXN_TLR:=getstringbyindex(udprecv,29,4);
com_head_rec.TXN_TERM:=getstringbyindex(udprecv,33,4);
end;


可是老是提示错误incompatible types:'array'and 'string'.

偶是初学
请大家指教。
 
在函数function getstringbyindex(buffer:string;index:integer;len:integer):string;
中你要返回string
而com_head_rec.TXN_CODE等变量全面定义为array[1..4] of char
所以类型不匹配,需要转换

 
用strlcopy
例如
strlcopy(com_head_rec.TXN_CODE,Pchar(getstringbyindex(s,1,7)),high(com_head_rec.TXN_CODE));

注意
定义char数组时用[0..max]
 
如楼上
cOM_HEAD=record
TXN_CODE:array[0..6] of char;
RET_CODE:array[0..3] of char;
。。。
再strcopy
 
那定义char数组时为什么要用[0..max]呢?
 
我试了一下
StrLCopy(@com_head_rec.TXN_CODE, pchar(copy(s,1,7)), Length(com_head_rec.TXN_CODE));
这样就可以了
谢谢楼上的
 
接受答案了.
 
后退
顶部