Delphi 布尔返回函数提示:分配给 '' 的值从未使用过?

SSp*_*oke 2 arrays delphi boolean function

我有

playerIds : Array[0..500] of string;

function isPlayerMob(check : string): boolean;
var
    i : integer;
begin
    for i := 0 to 500 do
    begin
        if ((playerIds[i] <> '') and (playerIds[i] = check)) then
        begin
            result := true;
        end;
    end;
    result := false;
end;
Run Code Online (Sandbox Code Playgroud)

我收到警告

Hint: Value assigned to 'isPlayerMob' never used
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何解决这个问题吗?该错误是针对

结果:=真;

Rem*_*eau 5

正如其他人告诉您的那样,您的循环分配给的值Result将被丢弃,因为您在最终分配给 之前没有退出该函数Result,因此循环分配什么并不重要。

您可以为结果分配一个初始值,然后根据需要重新分配它,或者您可以Exit在分配所需的值后简单地分配:

function isPlayerMob(check : string): boolean;
var
  i : integer;
begin
  for i := 0 to 500 do
  begin
    if ((playerIds[i] <> '') and (playerIds[i] = check)) then
    begin
      Result := True;
      Exit; // <-- add this
    end;
  end;
  Result := False; // <-- only performed if the loop does not find a match
end;
Run Code Online (Sandbox Code Playgroud)

或者,如果您使用的是最新的 Delphi 版本:

function isPlayerMob(check : string): boolean;
var
  i : integer;
begin
  for i := 0 to 500 do
  begin
    if ((playerIds[i] <> '') and (playerIds[i] = check)) then
      Exit(True); // <-- sets Result and exits at the same time
  end;
  Result := False; // <-- only performed if the loop does not find a match
end;
Run Code Online (Sandbox Code Playgroud)