Главная страница
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.045 c
3-1102658538
StarCon
2004-12-10 09:02
2005.01.16
RecordCount не работает...


14-1103862801
Чеширский_Кот
2004-12-24 07:33
2005.01.16
Где именинники?


3-1103013844
Garry_c
2004-12-14 11:44
2005.01.16
Русский текст в Delphi при использовании Interbase компонентов


1-1104836002
Andrewp
2005-01-04 13:53
2005.01.16
Загрузка файлов.


14-1104424751
Alex_S
2004-12-30 19:39
2005.01.16
Где берут лицензионные Delphi7 и надо ли оно?