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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Тип параметра - word 
V
    Опции темы
Christoph
Дата 4.2.2009, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Не понимаю одной вещи, вот смотрите, например есть метод (взял на фонарь)
Код

function TClipboard.HasFormat(Format: Word): Boolean;


и написано что Format, может иметь такие и такие то значения (СF_TEXT,CF_Bitmap...)

ведь тип Format численный, посмотрел константы 
Код

const
  { Predefined Clipboard Formats }
  {$EXTERNALSYM CF_TEXT}
  CF_TEXT = 1;
  {$EXTERNALSYM CF_BITMAP}
  CF_BITMAP = 2;
  {$EXTERNALSYM CF_METAFILEPICT}
  CF_METAFILEPICT = 3;
  {$EXTERNALSYM CF_SYLK}
  CF_SYLK = 4;
  {$EXTERNALSYM CF_DIF}
  CF_DIF = 5;
  {$EXTERNALSYM CF_TIFF}
  CF_TIFF = 6;
  {$EXTERNALSYM CF_OEMTEXT}
  CF_OEMTEXT = 7;
  {$EXTERNALSYM CF_DIB}
  CF_DIB = 8;
  {$EXTERNALSYM CF_PALETTE}
  CF_PALETTE = 9;

У каждой константы есть число,я догадываюсь, что вместо CF_TEXT подставляется 1 ? И эти константы описаны в разделе windows,как в этот вот параметр Format имеет доступ к константам из другого юнита? смотрел исходник метода, ничего не смог разобрать и в методе нет никакой проверки ничего такого.... Почему так все происходит не могу понять, помоги разобраться





--------------------
user posted image
PM MAIL ICQ   Вверх
Tcin
Дата 4.2.2009, 07:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 7
Регистрация: 4.2.2008
Где: Екатеринбург

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



Дык а что удивляет-то?

Константы форматов - они вовсе не дельфинские, они имеют общий смысл для всей операционной системы: за определёнными форматами закреплены определённые "номера". Список форматов, потенциально, может расширяться, ограничивать область возможных значений специальным типом данных не логично. Поэтому использован word. Константы в Delphi введены, прежде всего, чтобы программеру было легче: не запоминать, какая циферка что обозначает, а работать с именами - CF_TEXT - понятно, текст. Константы описаны в модуле windows, модуль windows включен в раздел uses модуля Clipbrd, в котором описан HasFormat. Собственно, HasFormat и не пользует эти констатнты сам, а передаёт их в APIшную IsClipboardFormatAvailable из user32.dll, обёртка к которой прописана в том же windows. Неизвестные ей форматы (неизвестные значения параметра Format) она, скорее всего, просто игнорирует - зачем ещё проверки? 
PM   Вверх
MetalFan
Дата 4.2.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Christoph @  4.2.2009,  01:22 Найти цитируемый пост)
И эти константы описаны в разделе windows,как в этот вот параметр Format имеет доступ к константам из другого юнита?

что за каша? что значит "параметр ... имеет доступ к константам"????
кстати Tcin на вопрос ответил

Это сообщение отредактировал(а) MetalFan - 4.2.2009, 12:27


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
bems
Дата 4.2.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



тут вопрос не в методе, а в том, что такое константа. А она - просто символьное представление значения. То есть компилятор подставляет число туда, где эта константа используется. То есть это 
Цитата(Tcin @  4.2.2009,  07:55 Найти цитируемый пост)
Константы описаны в модуле windows, модуль windows включен в раздел uses модуля Clipbrd

для тебя вообще не имеет значения. Модуль  windows (как и clipboard) должен быть подключен там, где ты вызываешь HasFormat(CF_TEXT). Во время выполнения там уже будет код аналогичный HasFormat(1) и методу HasFormat уже пофиг на область видимости этой константы. 


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Christoph
Дата 4.2.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Цитата(MetalFan @ 4.2.2009,  12:26)
Цитата(Christoph @  4.2.2009,  01:22 Найти цитируемый пост)
И эти константы описаны в разделе windows,как в этот вот параметр Format имеет доступ к константам из другого юнита?

что за каша? что значит "параметр ... имеет доступ к константам"????
кстати Tcin на вопрос ответил

Собирался с мыслями долго  smile 


Ну полюбому в WinApi должна быть какая то сверка констант, или какой то отбор


--------------------
user posted image
PM MAIL ICQ   Вверх
Tcin
Дата 4.2.2009, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 7
Регистрация: 4.2.2008
Где: Екатеринбург

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



Цитата(bems @  4.2.2009,  14:30 Найти цитируемый пост)
Модуль  windows (как и clipboard) должен быть подключен

 
вот windows, как раз, не обязательно. HasFormat'у оно не надо smile


Цитата(Christoph @  4.2.2009,  16:30 Найти цитируемый пост)
полюбому в WinApi должна быть какая то сверка констант


У WinAPI ноги из Си растут. А там с типами данных не церемонятся.
Какие ЧИСЛА узнают, те и обслужат. Остальных - в игнор.

Это сообщение отредактировал(а) Tcin - 4.2.2009, 15:57
PM   Вверх
bems
Дата 4.2.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(Tcin @  4.2.2009,  15:54 Найти цитируемый пост)
вот windows, как раз, не обязательно. HasFormat'у оно не надо 
ты нарочно прикидываешся? я ж вроде сно сказал, что HasFormat'у не нужно, нужно коду, вызываеющему HasFormat



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Christoph
Дата 4.2.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Всем спасибо за помощь, тему закрываю  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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