0
H A D G E H O G s
12.02.15
✎
22:47
|
Дня доброго.
Просто просьба: воспроизвести данный код и сообщить, какое значение примет переменная ErrorCode
procedure Test();
var
i: integer;
ErrorDescription: string;
FileName:String;
ErrorCode: int64;
readFile:TFileStream;
begin
try
filename:='';
readFile:=TFileStream.Create(FileName,fmOpenRead);
readFile.Free;
except
on e: Exception do
begin
ErrorDescription := e.Message;
ErrorCode := GetLastError;
ShowMessage(inttostr(ErrorCode));
end;
end;
end;
У меня она почему то в dll-ке принимает значение 0 (так и должно)/ в exeшнике - 123 (код неккорректного пути к файлу) что странно.
|
|
5
H A D G E H O G s
13.02.15
✎
12:18
|
(1) 0 должен быть потому, что есть исполнение кода вида:
->readFile:=TFileStream.Create(FileName,fmOpenRead);
->raise EFOpenError.CreateResFmt(@SFOpenErrorEx, [ExpandFileName(AFileName), SysErrorMessage(GetLastError)]);
-> SysErrorMessage()
-> Len := FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM or
FORMAT_MESSAGE_IGNORE_INSERTS or
FORMAT_MESSAGE_ARGUMENT_ARRAY or
FORMAT_MESSAGE_ALLOCATE_BUFFER, nil, ErrorCode, 0, @Buffer, 0, nil);
Вот этот FormatMessage() должен сбросить код ошибки в 0.
|
|