使用DWScript,我没有看到检查FileCreate函数返回值的明显方法.
示例(不工作)脚本:
function TestFileCreate : Boolean;
var
F : File;
begin
F := FileCreate('MyTestFile.txt');
Result := (F = -1); // Not working!
Result := (F.Handle = -1); // Not working!
end;
Run Code Online (Sandbox Code Playgroud)
从DWScript源代码中提取:
procedure TFileCreateFunc.DoEvalAsVariant(const args : TExprBaseListExec; var result : Variant);
var
h : THandle;
i : IdwsFileHandle;
begin
h:=FileCreate(args.AsFileName[0]);
i:=TdwsFileHandle.Create(h);
Result:=IUnknown(i);
end;
Run Code Online (Sandbox Code Playgroud)
如您所见,在内部调用Delphi CreateFile,失败时结果值为-1.此数值将转换为IdwsFileHandle.
它们的目的是在失败时引发异常。现在这个问题已经被修复了!
进行了扩展,现在仅在使用无效文件的情况下才会触发异常,但两个函数除外:FileIsValid 和 FileClose。还添加了帮助程序,以便可以像方法一样使用文件函数(即“FileIsValid(f)”也可以写为“f.IsValid”)