"no return value"是否使用继续?



AS。永远不会。对继续while/repaint循环有错误的直觉。出丑:-)

请参阅注释行。如果我取消注释它,编译就可以了。如果我一直对它进行注释,则会对未定义的结果发出警告。编译器似乎无法解释像Break和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;

我很愚蠢。

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

相关内容

最新更新