Arrays 如何在delphi中更改布尔数组的值
我正在用DelphiXe5编写一个小的Delphi程序。在我的代码中有一个动态布尔数组,我无法更改某些数组元素的值。我试图在设置数组的长度后初始化它,但没有帮助。以下是代码的一部分:Arrays 如何在delphi中更改布尔数组的值,arrays,delphi,Arrays,Delphi,我正在用DelphiXe5编写一个小的Delphi程序。在我的代码中有一个动态布尔数组,我无法更改某些数组元素的值。我试图在设置数组的长度后初始化它,但没有帮助。以下是代码的一部分: procedure DoSomething(names: array of string); var startWithA: array of Boolean; i: integer; begin SetLength(startWithA, Length(names)); // each eleme
procedure DoSomething(names: array of string);
var startWithA: array of Boolean;
i: integer;
begin
SetLength(startWithA, Length(names)); // each element is false by default
for i := 0 to Length(names) - 1 do begin
if (names[i].indexOf('A') = 0) then begin
startWithA[i] := true; // the value is not changed after executing this line
end;
end;
end;
你的代码运行得非常好。这是证据:
{$APPTYPE CONSOLE}
uses
System.SysUtils;
function StartsWithAIndices(const Names: array of string): TArray<Boolean>;
var
i: Integer;
begin
SetLength(Result, Length(Names));
for i := 0 to high(Result) do begin
if (Names[i].IndexOf('A') = 0) then begin
Result[i] := true;
end;
end;
end;
var
Indices: TArray<Boolean>;
b: Boolean;
begin
Indices := StartsWithAIndices(['Bob', 'Aaron', 'Aardvark', 'Jim']);
for b in Indices do begin
Writeln(BoolToStr(b, True));
end;
Readln;
end.
{$APPTYPE控制台}
使用
System.SysUtils;
函数StartsWithAIndices(常量名称:字符串数组):TArray;
变量
i:整数;
开始
SetLength(结果、长度(名称));
对于i:=0到高(结果)不开始
如果(名称[i].IndexOf('A')=0),则开始
结果[i]:=true;
结束;
结束;
结束;
变量
指标:焦油;
b:布尔型;
开始
指数:=开始带骰子(['Bob','Aaron','Aardvark','Jim']);
对于索引中的b,确实要开始
Writeln(BoolToStr(b,True));
结束;
Readln;
结束。
输出
False
True
True
False
假的
真的
真的
假的
可能您的混淆源于这样一个事实,即您分配给一个数组,该数组是一个局部变量,其值永远不会被读取。如果从未读取数组值,如何说数组值未被修改?或者,您启用了优化,编译器决定优化掉其值已写入但从未读取的局部变量
另外,您的函数可以写得更简单,如下所示:
function StartsWithAIndices(const Names: array of string): TArray<Boolean>;
var
i: Integer;
begin
SetLength(Result, Length(Names));
for i := 0 to high(Result) do begin
Result[i] := Names[i].StartsWith('A');
end;
end;
函数启动时使用aindices(常量名称:字符串数组):TArray;
变量
i:整数;
开始
SetLength(结果、长度(名称));
对于i:=0到高(结果)不开始
结果[i]:=Names[i].StartsWith('A');
结束;
结束;
nice last函数:)