但是假设我的程序这样的 precodure movechar(pdata^,pdata^:pchar;lenth:smallint) var i:smallint; begin for i:=0 to 3 do begin move(pdata1^,pdata2^,lenth); pdata1^='8888888'; end; 要把每次的pdata1加到pdata2原有的后面
不知我的建议可否: 先将pchar类型转换为String类型,连接后再转换为pchar类型.
// 根据假设,虽然此过程的做法毫无意义 precodure movechar(pdata1, pdata2: pchar; Count:smallint) var intSrcLen, intNewLen: Integer; begin intSrcLen := StrLen(pdata2); intNewLen := Count; for i:=0 to 3 do begin move(pdata1^, Ptr(Integer(pdata2) + intSrcLen)^, intNewLen); intSrcLen := intSrcLen + intNewLen; pdata1 := '8888888'; intNewLen := StrLen(pdata1); end; pdata2[intSrcLen] := #0; end;
move(pcharNew^, Ptr(Integer(pchar2) + intSrcLen)^, NewLen);
pchar2[intSrcLen + NewLen] := #0;
precodure movechar(pdata^,pdata^:pchar;lenth:smallint)
var
i:smallint;
begin
for i:=0 to 3 do
begin
move(pdata1^,pdata2^,lenth);
pdata1^='8888888';
end;
要把每次的pdata1加到pdata2原有的后面
先将pchar类型转换为String类型,连接后再转换为pchar类型.
precodure movechar(pdata1, pdata2: pchar; Count:smallint)
var
intSrcLen, intNewLen: Integer;
begin
intSrcLen := StrLen(pdata2);
intNewLen := Count;
for i:=0 to 3 do
begin
move(pdata1^, Ptr(Integer(pdata2) + intSrcLen)^, intNewLen);
intSrcLen := intSrcLen + intNewLen;
pdata1 := '8888888';
intNewLen := StrLen(pdata1);
end;
pdata2[intSrcLen] := #0;
end;