DWScript 的 FileCreate 函数的返回值如何检查?

7
使用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;

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。

1个回答

2

它们旨在在失败的情况下引发异常。现在已经修复了这个问题!

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


1
我接受现有的解决方案,但我更希望像原始的FileCreate函数一样有一个可测试的返回值。 - fpiette
嗯,我可能会改成那样并添加缺失的内容,抛出异常可能会导致当前代码发生回归(之前尝试使用文件时引发了异常,人们可能已经在那周围放置了try..except而不是打开/创建)。 - Eric Grange

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接