0
AS。沒關係。有錯誤的直覺感覺繼續/重複循環。自己做傻瓜:-)如果繼續使用「不返回值」?
請參閱評論欄目。 如果我取消註釋 - 編譯進行順利。 如果我保留它的評論,則會給出有關未定義結果的警告。 看來,編譯器無法解釋「中斷」和「繼續」等僞程序。
是否與之前的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;
該文檔在這裏沒有幫助。它並沒有使得非常清楚的是,在until之後立即評估「until」條件。在'repeat'循環中,'continue'幾乎等同於'goto until'。 – 2012-07-25 11:08:33
更一般地說,在任何循環中,'Continue'幾乎(但不完全)等同於goto到循環體的末尾。 – hvd 2012-07-25 11:10:52