![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Christoph |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
Не понимаю одной вещи, вот смотрите, например есть метод (взял на фонарь)
и написано что Format, может иметь такие и такие то значения (СF_TEXT,CF_Bitmap...) ведь тип Format численный, посмотрел константы
У каждой константы есть число,я догадываюсь, что вместо CF_TEXT подставляется 1 ? И эти константы описаны в разделе windows,как в этот вот параметр Format имеет доступ к константам из другого юнита? смотрел исходник метода, ничего не смог разобрать и в методе нет никакой проверки ничего такого.... Почему так все происходит не могу понять, помоги разобраться -------------------- ![]() |
||||
|
|||||
Tcin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 7 Регистрация: 4.2.2008 Где: Екатеринбург Репутация: 1 Всего: 1 |
Дык а что удивляет-то?
Константы форматов - они вовсе не дельфинские, они имеют общий смысл для всей операционной системы: за определёнными форматами закреплены определённые "номера". Список форматов, потенциально, может расширяться, ограничивать область возможных значений специальным типом данных не логично. Поэтому использован word. Константы в Delphi введены, прежде всего, чтобы программеру было легче: не запоминать, какая циферка что обозначает, а работать с именами - CF_TEXT - понятно, текст. Константы описаны в модуле windows, модуль windows включен в раздел uses модуля Clipbrd, в котором описан HasFormat. Собственно, HasFormat и не пользует эти констатнты сам, а передаёт их в APIшную IsClipboardFormatAvailable из user32.dll, обёртка к которой прописана в том же windows. Неизвестные ей форматы (неизвестные значения параметра Format) она, скорее всего, просто игнорирует - зачем ещё проверки? |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
что за каша? что значит "параметр ... имеет доступ к константам"???? кстати Tcin на вопрос ответил Это сообщение отредактировал(а) MetalFan - 4.2.2009, 12:27 -------------------- There are always someone smarter than you... |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
тут вопрос не в методе, а в том, что такое константа. А она - просто символьное представление значения. То есть компилятор подставляет число туда, где эта константа используется. То есть это
для тебя вообще не имеет значения. Модуль windows (как и clipboard) должен быть подключен там, где ты вызываешь HasFormat(CF_TEXT). Во время выполнения там уже будет код аналогичный HasFormat(1) и методу HasFormat уже пофиг на область видимости этой константы. -------------------- Обижено школьников: 8 |
|||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
Собирался с мыслями долго ![]() Ну полюбому в WinApi должна быть какая то сверка констант, или какой то отбор -------------------- ![]() |
|||
|
||||
Tcin |
|
|||
Новичок Профиль Группа: Awaiting Authorisation Сообщений: 7 Регистрация: 4.2.2008 Где: Екатеринбург Репутация: 1 Всего: 1 |
вот windows, как раз, не обязательно. HasFormat'у оно не надо ![]() У WinAPI ноги из Си растут. А там с типами данных не церемонятся. Какие ЧИСЛА узнают, те и обслужат. Остальных - в игнор. Это сообщение отредактировал(а) Tcin - 4.2.2009, 15:57 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
ты нарочно прикидываешся? я ж вроде сно сказал, что HasFormat'у не нужно, нужно коду, вызываеющему HasFormat
-------------------- Обижено школьников: 8 |
|||
|
||||
Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: 5 Всего: 11 |
Всем спасибо за помощь, тему закрываю
![]() -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |