Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите, правильно ли подавляются сообщения об ошибках? [D7, 2000]


An software developer ©   (2008-04-11 12:23:00) 


var y1_corr,y2_corr:Integer;

function is_it_9x:boolean;  //determine is in Windows 95 or 98
type vers=TOSVERSIONINFO;
var v:vers;
begin
result:=true;
 v.dwOSVersionInfoSize:= sizeof(TOSVERSIONINFO);
 GetVersionEx(v);
 if v.dwPlatformId>=2 then result:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
 type TIsAppThemed = function:BOOL;
 var M:TMessage; DLL: THandle;    IsAppThemed:TIsAppThemed;
begin
 y1_corr:=0; y2_corr:=0; // correct component positions with XP styles

 if NOT is_it_9x then SetErrorMode(1);  //SetErrorMode works only in 2000/XP and higher

 DLL:= LoadLibrary('uxtheme.dll');  // XP library
 if NOT is_it_9x then SetErrorMode(0);  //SetErrorMode works only in 2000/XP and higher
 IF DLL <> 0 THEN
 BEGIN
   @IsAppThemed := GetProcAddress(DLL, 'IsAppThemed');

   if  IsAppThemed  then y1_corr:=5;

   IF DLL <>0 THEN FreeLibrary(DLL);

 END;

 Caption:=IntToStr(y1_corr);
end;


Задача: нужно что бы интерфейс программы корректно отображался во всех виндовсах (9x/2000/XP). В XP необходима коррекция при включённых стилях с помощью переменной y1_corr.

Через библиотеку uxtheme.dll определяется, включены ли в XP стили.

Нужно что бы при вызове uxtheme.dll (если ёе нет) не возникало сообщение об ошибках. Я не нашёл куда вставить try..except и использовал SetErrorMode. Вроде работает. Правильно ли блокируются ошибки, нет ли каких подводных камней?


An software developer   (2008-04-11 13:33:00) [1]


var y1_corr, y2_corr: Integer;

function is_it_9x: boolean; //determine is in Windows 95 or 98
type vers = TOSVERSIONINFO;
var v: vers;
begin
 result := true;
 v.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO);
 GetVersionEx(v);
 if v.dwPlatformId >= 2 then result := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
type TIsAppThemed = function: BOOL;
var M: TMessage; DLL: THandle; IsAppThemed: TIsAppThemed;
begin
 y1_corr := 0; y2_corr := 0;             // correct component positions with XP styles
 if not is_it_9x then SetErrorMode(1);   //SetErrorMode works only in 2000/XP and higher
 DLL := LoadLibrary('uxtheme.dll');      // XP library
 if not is_it_9x then SetErrorMode(0);   //SetErrorMode works only in 2000/XP and higher
 if DLL <> 0 then
 begin
   @IsAppThemed := GetProcAddress(DLL, 'IsAppThemed');
   if IsAppThemed then y1_corr := 5;
   if DLL <> 0 then FreeLibrary(DLL);
 end;
 Caption := IntToStr(y1_corr);
end;

сформатировано Delphi formatter'ом


Anatoly Podgoretsky   (2008-04-11 13:12:00) [2]

> An software developer  (11.04.2008 13:04:03)  [3]

Какой хреновый форматер.


An software developer   (2008-04-11 13:04:00) [3]


BEGIN
 result := true;
 v.dwOSVersionInfoSize := sizeof(TOSVERSIONINFO);
 GetVersionEx(v);
 IF v.dwPlatformId >= 2 THEN result := false;
END;

PROCEDURE TForm1.FormCreate(Sender: TObject);
TYPE TIsAppThemed = FUNCTION: BOOL;
VAR M: TMessage; DLL: THandle; IsAppThemed: TIsAppThemed;
BEGIN
 y1_corr := 0; y2_corr := 0; // correct component positions with XP styles

 IF NOT is_it_9x THEN SetErrorMode(1); //SetErrorMode works only in 2000/XP and higher

 DLL := LoadLibrary('uxtheme.dll'); // XP library
 IF NOT is_it_9x THEN SetErrorMode(0); //SetErrorMode works only in 2000/XP and higher
 IF DLL <> 0 THEN
 BEGIN
   @IsAppThemed := GetProcAddress(DLL, 'IsAppThemed');

   IF IsAppThemed THEN y1_corr := 5;

   IF DLL <> 0 THEN FreeLibrary(DLL);

 END;

 Caption := IntToStr(y1_corr);
END;

сформатировано Source formatter'ом


Kolan   (2008-04-11 12:27:00) [4]

Отвратительный код. Офирми нормально, ничего не понятно…

ЗЫ
 An software developer — an если первая буква гласная…


Kolan   (2008-04-11 12:27:00) [5]

Оформи


Наверх

Титульная страница Поиск, карта сайта Написать письмо