Форум: "WinAPI";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Внизtry except... Найти похожие ветки
← →
Unknown user © (2004-11-26 14:46) [0]Ув. Мастера, граммотно ли я использую конструкцию try except, если нет то как лучше поступить в данном случае?
try
if Mode=fmCreate then begin
F:=CreateFile(PChar(FileName),GENERIC_READ and GENERIC_WRITE,
0,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
FHandle:=CreateFileMapping(F,nil,PAGE_READWRITE,0,0,nil);
FView:=MapViewOfFile(FHandle,FILE_MAP_WRITE,0,0,0);
end else begin
F:=CreateFile(PChar(FileName),GENERIC_READ,
FILE_SHARE_READ,nil,OPEN_EXISTING,0,0);
FHandle:=CreateFileMapping(F,nil,PAGE_READONLY,0,0,nil);
FView:=MapViewOfFile(FHandle,FILE_MAP_READ,0,0,0);
end;
if (F<0) or (FHandle=0) or (FView=nil) then
if Mode=fmCreate
then raise EFCreateError.CreateResFmt(@SFCreateError,[FileName])
else raise EFOpenError.CreateResFmt(@SFOpenError,[FileName]);
except
if FView<>nil then UnmapViewOfFile(V);
if FHandle<>0 then CloseHandle(FHandle);
FView:=nil;
FHandle:=0
end;
← →
Leonid Troyanovsky (2004-11-26 15:36) [1]
> Unknown user © (26.11.04 14:46)
> Ув. Мастера, граммотно ли я использую конструкцию try except,
> если нет то как лучше поступить в данном случае?
> if (F<0) or (FHandle=0) or (FView=nil) then
Лучше пользовать константу, INVALID_HANDLE_VALUE.
А так, в общем-то, правдоподобно.
Хотя, проще делать примерно так:
try
FHandle := CreateFile
Win32Check(FHandle <> INVALID_HANDLE_VALUE);
..
finally
if FHandle <> INVALID_HANDLE_VALUE then
CloseHandle(FHandle);
..
end;
Более дружественные сообщения можно получать в
обработчике исключений на уровень выше.
--
С уважением, LVT.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.039 c