如果继续使用,“没有返回值”?

时间:2012-07-25 10:55:20

标签: delphi warnings return-value delphi-xe2

AS。没关系。关于继续/重复循环的错误直觉。愚弄自己: - )

请参阅注释行。 如果我取消注释 - 编译就可以了。 如果我保持评论,则会给出关于未定义结果的警告。 似乎编译器无法解释像Break and Continue这样的伪程序。

以前的Delphi版本是否会发生? 它有QC吗?

//returns 0 or win32 error code
function TfmMain.callQDN(DeviceName: string;
  out buff: string): DWORD;
const len_step = 8192;
var res, len, err: DWORD;
    lpDeviceName: PChar;
begin
  SetLength(buff, len_step);
  len := Length(buff);

  lpDeviceName := nil;
  if DeviceName>'' then lpDeviceName := @DeviceName[1];

  repeat
    Res := QueryDosDevice(lpDeviceName, @buff[1], len);

    if Res = 0 then begin
       err := GetLastError;
//       Result := err;

       if err = ERROR_INSUFFICIENT_BUFFER then begin
          len := len_step + len;
          SetLength(buff, len);
          continue;
       end;

       Result := err;
    end else begin
       Result := 0;
       SetLength(buff, res); // res+1 ?
    end;

  until (Result = 0);

end;

1 个答案:

答案 0 :(得分:0)

我很蠢。

继续重新检查条件,而不仅仅是再次启动循环体