如何检查 DWScript FileCreate 函数的 return 值?

How to check return value of DWScript FileCreate function?

使用 DWScript,我没有看到检查 FileCreate 函数的 return 值的明显方法。

示例(无效)脚本:

function TestFileCreate : Boolean;
var
    F : File;
begin
    F := FileCreate('MyTestFile.txt');
    Result := (F = -1);        // Not working!
    Result := (F.Handle = -1); // Not working!
end;

从 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;

如您所见,在内部,Delphi CreateFile 被调用,失败时结果值为-1。此数值转换为 IdwsFileHandle。

它们的目的是在失败的情况下引发异常。此问题现已修复!

已扩展,现在只有在使用无效文件时才会触发异常,但两个函数除外:FileIsValid 和 FileClose。还添加了帮助程序,以便可以像方法一样使用文件函数(即 "FileIsValid(f)" 也可以写成 "f.IsValid")