我正在尝试执行以下表达式,但我一直遇到这个异常,"找不到'chars'的属性设置程序。"
以下是表达式:
xstr, str : string;
for i := 1 to length(str) do
begin
if ((i mod 2)<>0) then
begin
xstr[i] := char(Ord(str[i]) xor $AA); <<<<------ Exception Raised
end
else
begin
xstr[i] := char(Ord(str[i]) xor $55); <<<<------ Exception Raised
end;
end;
"str"的值被传递到加密方法中。
这是加密方法的一部分。最好的方法是什么?
System.String
是一个不可变的类,这意味着您不能修改它的实例。.NET需要修改字符串操作来创建字符串的新实例。就您的目的而言,创建一个由修改过的字符组成的char
数组,然后用它构造一个字符串可能是最简单、最有效的。
通常,System.Text.StringBuilder
类提供了一个可变的字符串实例。
事实上,即使不是因为字符串的不变性,你的代码也会失败,因为你没有分配一个字符串,所以分配给xstr[i]
会导致缓冲区溢出异常。当使用char
的数组时,您需要这样做。