2016-02-02 3 views
7

Используя DWScript, я не вижу очевидного способа проверки возвращаемого значения функции FileCreate.Как проверить возвращаемое значение функции 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.

ответ

2

Они должны были создать исключение в случае отказа. Теперь это исправлено!

Extended, так что теперь исключение запускается только в случае использования недопустимого файла, за исключением двух функций: FileIsValid и FileClose. Также добавлены помощники, так что функции файлов могут использоваться как методы (например, «FileIsValid (f)» также могут быть записаны как «f.IsValid»)

+1

Я принимаю решение «как есть», но я предпочел, чтобы проверяемое возвращаемое значение, как и исходная функция FileCreate. – fpiette

+0

Хммм, я, вероятно, поменю на это и добавлю недостающий материал, повышение исключения может вызвать регрессии в текущем коде (ранее исключение было поднято при попытке использовать файл, и люди, возможно, поставили try..except вокруг этого, а не Open/Create) –

Смежные вопросы