Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];

Вниз

TBitmap в windows.pas и в graphics.pas   Найти похожие ветки 

 
Piter ©   (2007-07-10 14:06) [0]

В модуле Graphics объявлен всем известный класс TBitmap:

TBitmap = class(TGraphic)

Но не могу понять, зачем в модуле Windows объявлена структура-запись также TBitmap:

tagBITMAP = packed record
   bmType: Longint;
   bmWidth: Longint;
   bmHeight: Longint;
   bmWidthBytes: Longint;
   bmPlanes: Word;
   bmBitsPixel: Word;
   bmBits: Pointer;
 end;
 TBitmap = tagBITMAP;


Какой смысл? И почему Delphi не ругается на два одинаковых объявленных типа и берет по-умолчанию (когда подключены оба модуля) описание TBitmap из graphics?


 
Kerk ©   (2007-07-10 14:08) [1]

Берет она его не по умолчанию, а из последнего в списке модуля.

P.S.
LMD


 
Piter ©   (2007-07-10 14:51) [2]

да, так и есть.

Но остается вопрос - нафига так сделано? То есть, поменять местами имена модулей и везде будет подставлен тип TBitmap из windows.pas. Что приведет к ошибкам, естественно.
Смысл?

P.S. Керкюше можно не напрягаться и не отвечать, тем более ответа он не знает.


 
tesseract ©   (2007-07-10 14:52) [3]


> Смысл?P.S. Керкюше можно не напрягаться и не отвечать, тем
> более ответа он не знает.


Знает как и я. Если ты не используешь graphics ты работаешь со структурой windows. или всегда можно сказать windows.tbitmap.


 
oldman ©   (2007-07-10 14:52) [4]


> Piter ©   (10.07.07 14:51) [2]
> P.S. Керкюше можно не напрягаться и не отвечать, тем более
> ответа он не знает.


Ты вопрос задал или конкурс устроил?


 
Однокамушкин   (2007-07-10 14:58) [5]

О, это старая история... в Borland просто сразу не смогли решить, как правильно именовать системные типы... в системе есть такой тип - BITMAP, он совпадает с Windows.TBitmap... В Delphi 2 было всё просто: был тип BITMAP в Windows и TBitmap в Graphics... начиная с Delphi 3 ввели новые правила именования системных типов в модулях Delphi - к названию типа прибавляется префикс "Т", регистр меняется на удобочитаемый... Так BITMAP превратился в TBitmap, став тёзкой уже существовавшего TBitmap из Graphics... Из соображений совместимости Graphics.TBitmap переименовывать не стали, тем более что перепутать их сложно, компилятор обязательно заметит...


 
Инс ©   (2007-07-10 15:02) [6]


> И почему Delphi не ругается на два одинаковых объявленных
> типа


Она и не должна. Правила языка допускают одинаковые иденитификаторы в разных юнитах. Если нужно указать на конкретный - используется расширенный синтаксис с указанием модуля. По умолчанию используется [1]


 
clickmaker ©   (2007-07-10 15:06) [7]

а в .НЕТ есть целых 3 таймера - System.Windows.Forms,  System.Timers, System.Threading
Так что Борман еще по-божески...


 
Piter ©   (2007-07-10 15:38) [8]

tesseract ©   (10.07.07 14:52) [3]
Если ты не используешь graphics ты работаешь со структурой windows. или всегда можно сказать windows.tbitmap


я тоже так подумал. Но нелогично в том смысле, зачем вводить путанницу. Пусть кто хочет использует какой-нибудь TBitmapRec, а другой TBitmap.

история Однокамушкин про то, что ввели новую нотацию с префиксом T выглядит более правдоподобнее.


 
Anatoly Podgoretsky ©   (2007-07-10 16:42) [9]


> Какой смысл? И почему Delphi не ругается на два одинаковых
> объявленных типа и берет по-умолчанию (когда подключены
> оба модуля) описание TBitmap из graphics?

Во первых это неправда, а во вторых элементарная безграмотность, надо пользоваться каноническими именами.


 
Piter ©   (2007-07-10 18:30) [10]

Что неправда? Что в windows.pas и в graphics.pas объявлены типы с одинаковыми именами?
Это абсолютная правда.


 
oldman ©   (2007-07-10 18:32) [11]


> Piter ©   (10.07.07 18:30) [10]
> в windows.pas и в graphics.pas объявлены
> типы с одинаковыми именами?
> Это абсолютная правда.


Ну и что?
То, что Дельфи не ругается - это элеменетарная безграмотность. И это правда!


 
Piter ©   (2007-07-10 19:15) [12]

oldman ©   (10.07.07 18:32) [11]
То, что Дельфи не ругается - это элеменетарная безграмотность


ну да, ступил. Просто если честно никогда так не делал, даже если классы в разных юнитах, никогда не называл их одинаково. Да и сейчас буду придерживаться той же идеи, по-моему, это только место для путаницы.

oldman ©   (10.07.07 18:32) [11]
это элеменетарная безграмотность. И это правда!


возможно. Но АП употребил слово "неправда" :)


 
Anatoly Podgoretsky ©   (2007-07-10 19:50) [13]

Тебя не смущает, что есть множество Create/Open и т.д.

Вот это не правда
> берет по-умолчанию (когда подключены
> оба модуля) описание TBitmap из graphics?

Не правда, не берет по умолчанию из graphics, берет из обеих, а использует в соотвствии с правилами видимости, последнее по порядку объявление и этим пропитана вся Дельфи, да еще со времен Турбо Паскаля.
Программист должен использовать канонические имена в случае неоднозначности, иначе грош ему цена как специалисту.


 
wicked ©   (2007-07-10 21:17) [14]

а билдер такого не пропускает
на самом деле там целая каша - BITMAP из windows.h, TBitmap из Windows.hpp и TBitmap из Graphics.hpp

поэтому в прожектах где то в начале прописано
#define TBmp Graphics::TBitmap
и все дела :)


 
jack128 ©   (2007-07-10 23:49) [15]


> а билдер такого не пропускает

вВидимо потому что в С++ нету понятия модуля.


 
wicked ©   (2007-07-11 00:31) [16]

> jack128 ©   (10.07.07 23:49) [15]
бинго :)
что, кстати, раздражает - напишешь маленькую реюзабельную штучку и мучайся - либо таскай исходники из прожекта в прожект, либо всю в хедер пиши, либо библиотеку делай и слинковаться потом не забудь
да, ленивый я, ленивый, знаю :)


 
Германн ©   (2007-07-11 01:18) [17]


> wicked ©   (11.07.07 00:31) [16]
>
> > jack128 ©   (10.07.07 23:49) [15]
> бинго :)
> что, кстати, раздражает - напишешь маленькую реюзабельную
> штучку и мучайся - либо таскай исходники из прожекта в прожект,
>  либо всю в хедер пиши, либо библиотеку делай и слинковаться
> потом не забудь


"- Однако! Я чувствую, что после водки вы пили портвейн! Помилуйте, да разве это можно делать!"

И нет никакой особой разницы что есть "водка" и что "портвейн". Либо только С, либо только Паскаль, либо не надо раздражаться при переходе от одного к другому :)
Имхо.


 
wicked ©   (2007-07-11 01:28) [18]

> Германн ©   (11.07.07 01:18) [17]

> И нет никакой особой разницы что есть "водка" и что "портвейн".
>  Либо только С, либо только Паскаль, либо не надо раздражаться
> при переходе от одного к другому :)
> Имхо.

то есть, переводя с езопового на нормальный "будь доволен тем, что есть"?
а если не хочу?.... а если хочу сливки двух миров?
тем более, я когда то обдумывал синтаксис модулей для си++... вышло любопытно


 
Германн ©   (2007-07-11 02:02) [19]


> wicked ©   (11.07.07 01:28) [18]
>
> > Германн ©   (11.07.07 01:18) [17]
>
> > И нет никакой особой разницы что есть "водка" и что "портвейн".
>
> >  Либо только С, либо только Паскаль, либо не надо раздражаться
> > при переходе от одного к другому :)
> > Имхо.
>
> то есть, переводя с езопового на нормальный "будь доволен
> тем, что есть"?
> а если не хочу?.... а если хочу сливки двух миров?
> тем более, я когда то обдумывал синтаксис модулей для си++.
> .. вышло любопытно
>

Если хочешь "сливки двух миров", то делай их сам. Поскольку никто другой пока этого не сделал. Но тогда не высказывай прилюдно своё раздражение, что сливки не получаются той жирности, которую ты хочешь. :)


 
Piter ©   (2007-07-11 14:38) [20]

Anatoly Podgoretsky ©   (10.07.07 19:50) [13]
Тебя не смущает, что есть множество Create/Open и т.д


Анатолий, я поражаюсь вашему умению сказать не по делу. Причем здесь блин ВООБЩЕ Create / Open?! Каким образом объявления типов соотносится с методами внутри всяческих классов?!?!

Понятно, что внутри разных классов могут быть методы с одинаковым именем, это вообще не несет никаких проблем (ну если только с оператором with).

Тут же объявлены именно два разных типа с одинаковыми именами. По-моему, это плохо. Когда работоспособность зависит от того, в каком порядке поставлены юниты в uses - имхо, не очень.


 
vpbar ©   (2007-07-11 14:47) [21]

Вот у вас ник как у города - Piter - эт неправильно :)
>>тут же объявлены именно два разных типа с одинаковыми именами.
РАЗНЫЕ у них имена Windows.TBitmap и Graphics.TBitmap !


 
Piter ©   (2007-07-11 14:49) [22]

vpbar ©   (11.07.07 14:47) [21]
Вот у вас ник как у города - Piter - эт неправильно :)


абсолютно неверно. Это у города название, как у меня ник.


 
Anatoly Podgoretsky ©   (2007-07-11 17:05) [23]

> Piter  (11.07.2007 14:38:20)  [20]

Учись, пригодится, если хочешь работать программистом. Это азы Паскаля.


 
IMHO ©   (2007-07-11 17:27) [24]


> vpbar ©   (11.07.07 14:47) [21]
>
> Вот у вас ник как у города - Piter - эт неправильно :)
> >>тут же объявлены именно два разных типа с одинаковыми
> именами.


нет такого города в России - Piter. Есть город Санкт-Петербург. Так что с уникальностью имен здесь усё у порядке.


 
Piter ©   (2007-07-11 18:02) [25]

Anatoly Podgoretsky ©   (11.07.07 17:05) [23]

да пытайтесь стебаться сколько вам влезет, я уже давно работаю и начальство довольно. А вы стебитесь, стебитесь, особенно когда моя зарплата превысит вашу раза в 2-3.

Строить из себя такого типа отечески заботливого дядю легко :) Только времена меняются. И иногда дядят ничего больше не остается, чем строить из себя кого-то.


 
Virgo_Style ©   (2007-07-11 18:47) [26]

Piter ©   (11.07.07 18:02) [25]

По прочтении сего плакал весь... Ну и детство, елки-палки))))


 
Anatoly Podgoretsky ©   (2007-07-11 19:51) [27]

> Piter  (11.07.2007 18:02:25)  [25]

Не стоит заглядывать в чужой карман.


 
Anatoly Podgoretsky ©   (2007-07-11 19:52) [28]

> Virgo_Style  (11.07.2007 18:47:26)  [26]

Да бог с ним, пускай интересно же смотреть как он горячится :-)
Где мне еще такого найти?


 
oldman ©   (2007-07-11 19:55) [29]


> Anatoly Podgoretsky ©   (11.07.07 17:05) [23]


+10


> Piter ©   (11.07.07 18:02) [25]


-10


 
Skyle ©   (2007-07-12 07:59) [30]


> oldman ©   (11.07.07 19:55) [29]
> > Anatoly Podgoretsky ©   (11.07.07 17:05) [23]
> +10
>
> > Piter ©   (11.07.07 18:02) [25]
> -10

Итого - при своих.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.047 c
2-1184051226
Первокласник Вася
2007-07-10 11:07
2007.08.05
Поиск окна


15-1183710642
Grant
2007-07-06 12:30
2007.08.05
Запись СD-R


2-1183796262
Kolan
2007-07-07 12:17
2007.08.05
Логика дин. добавления пунктов меню.


15-1183896980
@!!ex
2007-07-08 16:16
2007.08.05
Помогите улучшить решение.


3-1177424576
alpha5
2007-04-24 18:22
2007.08.05
Как узнать позицию маркера (индикатора) в dxDBGrid ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский