Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ChangeDisplaySettingsEx нужно передать nil 
V
    Опции темы
Ak47black
  Дата 21.7.2007, 04:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Здравствуйте.
Вообщем у меня такая ситуация тут и я хочю посоветоваться как тут лучше.
Есть функция ChangeDisplaySettingsEx и она принимает следующие  параметры.
Код

LONG ChangeDisplaySettingsEx(
  LPCTSTR lpszDeviceName,
  LPDEVMODE lpDevMode,
  HWND hwnd,
  DWORD dwflags,
  LPVOID lParam
);

Мне нужно в параметр 
Код

LPDEVMODE lpDevMode,

передать nil
Такое можно сделать, тут даже написано в Msdn
Цитата

If lpDevMode is NULL, ChangeDisplaySettingsEx uses all of the values currently in the registry for the display setting.

Но если я просто подставляю nil в Delphi, я вижу 
Цитата

Types of actual and formal var parameters must be identical

Как мне тут правильно сделать чтобы не было ошибки и тем временем нормально работало?
PM MAIL   Вверх
dumb
Дата 21.7.2007, 04:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 13
Всего: 158



синтаксис дельфи особо не знаю.. я б сделал как-нибудь так:
Код

...
interface
...
{$EXTERNALSYM ChangeDisplaySettingsEx}
function ChangeDisplaySettingsEx(lpszDeviceName: PChar; lpDevMode: PDeviceMode; // <--
        wnd: HWND; dwFlags: DWORD; lParam: Pointer): Longint; stdcall;

implementation

function ChangeDisplaySettingsEx; external user32 name 'ChangeDisplaySettingsExA';
...

PM MAIL   Вверх
Snowy
Дата 21.7.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



В дельфи это варовский параметр.
Поэтому передаётся не указатель, а сама структура.
Поэтому, если у тебя указатель (например nil), то нужно его разыменовать.
Код
ChangeDisplaySettingsEx('', PDeviceMode(nil)^, 0, 0, nil);

PM MAIL   Вверх
Alexeis
Дата 21.7.2007, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



А еще можно переписать прототип функции, так чтобы вместо var параметра на той позиции оказалась переменная типа указатель на DeviceMode, при это ничуть не нарушиться правильность вызова.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ak47black
Дата 22.7.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Спасибо всем за ответы.
От Snowy способ, больше всего мне подошол +
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.