powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / проблема с SystemParametersInfo
14 сообщений из 14, страница 1 из 1
проблема с SystemParametersInfo
    #36328317
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот этот код прекрасно работал на D2007:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
   procedure  DoIndirect;
   var  NonClientMetrics: TNonClientMetrics;
      Siz: integer;
   begin 
    Siz := SizeOf(NonClientMetrics);
    FillChar(NonClientMetrics, Siz,  0 );
    NonClientMetrics.cbSize := Siz;
     if  DefaultFont <> dTimeFont  then   begin 
       if  SystemParametersInfo(SPI_GETNONCLIENTMETRICS,  0 , @NonClientMetrics,  0 )  then 
         with  NonClientMetrics  do 
           case  DefaultFont  of 
            dCaptionFont: result := lfCaptionFont;
            dSmCaptionFont: result := lfSmCaptionFont;
            dMenuFont: result := lfMenuFont;
            dStatusFont: result := lfStatusFont;
            dMessageFont: result := lfMessageFont;
           end 
       else 
        RaiseLastOSError;
     end ;
   end ;

Но с переходом на D2010 вызывает такую ошибку:
авторFirst chance exception at $7C812AFB. Exception class EOSError with message
'System Error. Code: 2.
Не удается найти указанный файл'.
Process project123.exe (216)


Как пофиксить?
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328322
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, ошибка при выполнении SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0)...
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328382
Фотография quaid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingКак пофиксить?

Код: plaintext
Siz := NonClientMetrics.SizeOf;
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328386
Фотография quaid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Похоже, что у тебя Виста?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 class   function  tagNONCLIENTMETRICSW.SizeOf: Integer;
 begin 
   if  Win32MajorVersion >=  6   then 
     // Size of complete structure 
    Result := System.SizeOf(tagNONCLIENTMETRICSW)
   else 
     // Platforms prior to Vista do not recognize the field iPaddedBorderWidth 
    Result := System.SizeOf(tagNONCLIENTMETRICSW) - System.SizeOf(Integer);
 end ;
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328391
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
quaidP.S. Похоже, что у тебя Виста?
win xp sp3
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328392
Фотография quaid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quaidP.S. Похоже, что у тебя Виста?
Нет, я напутал, судя по коду - у тебя не Виста
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328399
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
quaid,
твой совет помог, спасибо!
такие результаты:
Siz := SizeOf(NonClientMetrics); ==> 504
Siz := NonClientMetrics.SizeOf; ==> 500 !!!
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328406
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверь описание функции по Windows.pas, может они изменили описание функции в части @NonClientMetrics, может надо без @

--
http://www.podgoretsky.com
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328429
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly PodgoretskyПроверь описание функции по Windows.pas, может они изменили описание функции в части @NonClientMetrics, может надо без @

--
http://www.podgoretsky.com
Не, без @ нельзя:
[Error] E2250 There is no overloaded version of 'SystemParametersInfo' that can be called with these arguments
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #36328454
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже проверил по Windows.pas - у тебя правильно

--
http://www.podgoretsky.com
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
проблема с SystemParametersInfo
    #39581387
octamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>> FillChar(NonClientMetrics, Siz, 0);

Размер CHAR:
в D2007 - 1 байт
в D2010 - 2 байта

Т.е. этот оператор затрёт не только область NonClientMetrics, но и столько же байт после неё
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #39581433
octamer, неужели ты думаешь, что создатель темы за последние 8 лет, так и остался с этой проблемой? Пора завязывать с некромантией
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #39581445
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
octamer>> FillChar(NonClientMetrics, Siz, 0);

Размер CHAR:
в D2007 - 1 байт
в D2010 - 2 байта

Т.е. этот оператор затрёт не только область NonClientMetrics, но и столько же байт после неё

садись, два.
FillChar оперирует байтами.
...
Рейтинг: 0 / 0
проблема с SystemParametersInfo
    #39581734
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingquaid,
твой совет помог, спасибо!

Через восемь лет - не за что! :)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / проблема с SystemParametersInfo
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]