各位老师好。
我碰到了如下问题。
动态数组不能与字符串相互赋值。程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
x1:string; //字符串
x2:array of char; // 动态数组
begin
x1:='abc123';
x2:=x1; //出现错误: Incompatible types: 'String' and 'dynamic array'
//为什么会出现上述错误?请各位老师指点为。
//怎样才能实现动态数组与字符串相互赋值?
end;
我碰到了如下问题。
动态数组不能与字符串相互赋值。程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
x1:string; //字符串
x2:array of char; // 动态数组
begin
x1:='abc123';
x2:=x1; //出现错误: Incompatible types: 'String' and 'dynamic array'
//为什么会出现上述错误?请各位老师指点为。
//怎样才能实现动态数组与字符串相互赋值?
end;
2.String 到Char数组赋值,用函数StrPCOPYx1:='abc123';
x2:=x1; SetLength(x2,8);
StrPCopy(x2,x1);
x1:string;
x2:array of char;
i:Integer;
begin
x1:='1234';
SetLength(X2,Length(X1));
for i:=Low(X2) to High(X2) do X2[i]:=X1[i+1];
end;
var
x1: string; //字符串
x2: array of char; // 动态数组
begin
x1:='abc123';
SetLength(x2,8);
StrPCopy(PChar(x2),x1); ShowMessage(string(x2));
end;
var
x1:string;
x2:array of char;
i:Integer;
begin
x1:='1234';
SetLength(X2,Length(X1));
for i:=Low(X2) to High(X2) do
begin
if X1[i+1]=#0 then Break;//结束符,否则X2 Length(X1)之后还有字符串
X2[i]:=X1[i+1];
end;
end;
刚刚试了,要这样: 1.动态数据要setlength,
2.String 到Char数组赋值,用函数StrPCOPY x1:='abc123';
x2:=x1; SetLength(x2,8);
StrPCopy(@x2,PChar(x1)); //这里,要取指针地址 x1 转换为PChar
x2:=x1; SetLength(x2,length(x1));
Move(pchar(x1)^,pchar(x2)^,length(x2));