delphi7 要求的对象或 class 类型
Object or class type required in delphi7
我尝试将字符串值转换为字符数组。
我写了下面的代码但是得到了
的错误
[Error] Unit1.pas(35): Record, object or class type required
本行部分a := s.ToCharArray;
procedure TForm1.Button1Click(Sender: TObject);
var
a: array of char;
s: String;
begin
s:= Edit1.Text;
a := s.ToCharArray;
end;
有什么问题?
在 Delphi7 中没有字符串助手,因此您遇到了编译错误。改用这个
SetLength(a, Length(s));
Move(Pointer(s)^, Pointer(a)^, Length(s) * SizeOf(s[1]));
现在,SizeOf(s[1])
在 Delphi 7 中是 1
,因此乘法不是绝对必要的,但这确实意味着如果您移动到Unicode Delphi.
或者,如果 Move
的使用不合您的口味,请使用循环复制字符
SetLength(a, Length(s));
for i := 1 to Length(s) do
a[i - 1] := s[i];
我尝试将字符串值转换为字符数组。 我写了下面的代码但是得到了
的错误[Error] Unit1.pas(35): Record, object or class type required
本行部分a := s.ToCharArray;
procedure TForm1.Button1Click(Sender: TObject);
var
a: array of char;
s: String;
begin
s:= Edit1.Text;
a := s.ToCharArray;
end;
有什么问题?
在 Delphi7 中没有字符串助手,因此您遇到了编译错误。改用这个
SetLength(a, Length(s));
Move(Pointer(s)^, Pointer(a)^, Length(s) * SizeOf(s[1]));
现在,SizeOf(s[1])
在 Delphi 7 中是 1
,因此乘法不是绝对必要的,但这确实意味着如果您移动到Unicode Delphi.
或者,如果 Move
的使用不合您的口味,请使用循环复制字符
SetLength(a, Length(s));
for i := 1 to Length(s) do
a[i - 1] := s[i];