Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.069 c
4-1101539901
DelphiN!
2004-11-27 10:18
2005.01.16
Свойства ярлыка


1-1103867857
LaidBack
2004-12-24 08:57
2005.01.16
Нужен хитрый вариантный тип


1-1104637374
antonn
2005-01-02 06:42
2005.01.16
Меню и подменю


6-1099175830
Terminal 2
2004-10-31 02:37
2005.01.16
Создание приложения для хостинга


1-1104275154
KriNeedHelp
2004-12-29 02:05
2005.01.16
kak dobavit animaciju gif formata v programku??