Главная страница
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.049 c
14-1103735684
Kolan
2004-12-22 20:14
2005.01.16
C наступающим ...


14-1103810851
inic
2004-12-23 17:07
2005.01.16
Брутальный картридж :))


1-1104221625
Floppy
2004-12-28 11:13
2005.01.16
Master-Detail QuickReport


1-1104751746
t4
2005-01-03 14:29
2005.01.16
ShellListView


4-1101711707
BVV
2004-11-29 10:01
2005.01.16
Время создания файла