Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check return value of DWScript FileCreate function?

Using DWScript, I don't see obvious way of checking the return value of the FileCreate function.

Example (not working) script:

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

Extract from DWScript source code:

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;

As you can see, internally, Delphi CreateFile is called and the result value is -1 when it fails. This numeric value is converted to a IdwsFileHandle.

like image 717
fpiette Avatar asked Feb 02 '16 14:02

fpiette


1 Answers

They were intended to raise an exception in case of failure. This has now beed fixed!

Extended so that now exception is triggered only in case of use of an invalid file, except for two functions: FileIsValid and FileClose. Also added helpers so that file functions can be used like methods (ie. "FileIsValid(f)" can also be written as "f.IsValid")

like image 86
Eric Grange Avatar answered Oct 16 '22 18:10

Eric Grange