StackOverflow に投稿されたこのコードを見たことがあります。
with TDownloadURL.Create(nil) do
try
URL := 'myurltodownload.com';
filename := 'locationtosaveto';
try
ExecuteTarget(nil);
except
result := false;
end;
if not FileExists(filename) then
result := false;
finally
free;
end;
次のように簡略化できませんか。
Result:= FALSE; <--------- Compiler complains
DeleteFile(Dest);
dl:= TDownloadURL.Create(NIL);
TRY
dl.URL:= URL;
dl.FileName:= Dest;
dl.ExecuteTarget(NIL);
Result:= FileExists(Dest);
FINALLY
dl.Free;
END;
プログラムが直接 'finally' にジャンプするため、'ExecuteTarget' で何か問題が発生した場合、最終的な Result:= ... は決して実行されません。右?したがって、関数は FALSE を返します。私は何か間違ったことをしていますか?
PS:
- このコードをスレッドで使用するつもりです。
- 関数を Delphi に入れただけで、コンパイラは最初の行について「割り当てられた値が使用されていません」と苦情を言います。