Структура программирования, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

Как узнать обьект?, Как узнать обьект?
Вопрос о TThread, Одновременные процессы
TAction - несколько горячих клавиш
TAction - области "видимости"
Совместная разработка приложений, Какое лучше использовать средство?
Разрушение компонента
ПОМОГИТЕ плз, Языки программирования
ПОМОГИТЕ , ПОЖАЛУЙСТА, КАК ЧЕРЕЗ ПАСКАЛЬ УПРАВЛЯТЬ ПОРТОМ
Edit на MainMenu, как разместить
Смена шрифтов в редакторе Делфи, надоел Courier New
Из чего сделаны типы, на мето языках???
Сколько работала программа?
Debug Dll, Как отдебажить библиотеку
сканирование файла
как сделать taskbar прозрачным? (-)
Как узнать размер директории?, Может быть есть отдельная функция?
Как выйти из for цикла?
Вращения эллипса вокруг точки, Вращения эллипса вокруг точки
Языки и раскладки..., Где найти раскладки разных языков?
О разных версиях операционных систем!
COM порт, слежение
Помогите перекодировать
Crystal Reports 8.5
О локалке!
Как Вы относитесь к курящим девушкам?
Вопрос по поводу свернуть прогу в system tray, подскажите!
Мистика в компиляторе Delphi
JPEG в BLOB, Есть необходимость хранить JPEG в BLOB
Указатель на поле записи, Как сделать?
О сохранении иконки, Не могу добиться сохранения иконки
Delphi+Excel, Решение задач линейного программирования
Представление строк
Как отследить с какими парамами запущен процесс
Прямые преобразования, RTTI
Присвоение события в run-time
Функция TypeInfo, Опять объектное ориентирование...
Объявить класс в DLL?
Работа с объектами в DLL
Вызов методов предков, Вопрос по объектному ориентированию...
Помогите плиз!!!
Вызов BPL
Операторы As, Is
Предлагаю решение как сохранить иконку 256 цветов, Сохранение 256-цветной иконки
программа в виде справки
А можно ли высоту TComboBox сделать менее 21.
Спаренные кнопки !!!, Как изменять величину на нецелое значени
Грызуны, Скрытные грызуны
По поводу *.dcu
В чем ошибка?
Поиск окон, Z-order
Замена названия окон
Читаем значение реестра с помощью RegOpenKeyEx.
Снова не могу поймать MM_MCINOTIFY.
Delphi между Excel и Oracle8i, Проблема
Ошибка в функции..., Хелп
ID Процесса
Как переключить в RichEdit Charset?, Как в программе на Дельфи изменит CharSe
WinAmp
Директивы вызовов функций, Может кто объяснит
обход дерева
Ссылка на MDI окно, Как сделать чтобы фрма предавалась в про
Com-port, чтение - запись
Управление OpenOffice (StarOffice) из Delphi
Delphi and DBF
Ошибка соединения с сервером
Как вывести диалоги свойств следующих вещей:
Обработка нажатия мыши
Delphi6: 1251 -> 866 - как?, :-) - не нашел по этой теме!
FindComponent, Проблема использования
Hook, запретить что-нть.

Платные хостинги     Раскрутка сайта     Книги по программированию


Прямые преобразования, RTTI

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Тут Вит запостил на мой взгляд очень интересные темы. Решил я с RTTI тоже по-экспериментировать и вот что у меня получилось (хотя для кого-то это все равно, что Америку открыть, для меня - нет). Прошу пояснить как же так получается?Вот код:procedure TForm1.Button2Click(Sender: TObject);begin TEdit(Button1).Color:=clred; edit1.Color:=TEdit(Button1).Color;end; Получается, что Button1 хранит значение св-ва Color (причем вместо TEdit во второй строке можно TLabel написать), а у него такого св-ва нету... Мало того, если, например, добавить еще одну кнопку (Button3) и написать Button3:=Button1 то происходит "передача" св-ва колор. Если в кратце не получиться, то хоть ссылку...

- TEdit и TButton - наследники TControl, в котором вводится свойство Color (на этом этапе иерархии оно скрыто). Некоторые наследники делают его видимым, но имеется и хранится оно у всех детей по одному адресу (новые поля у наследников добавляются в конец)

- Ну нет и нет. Просто в тех книгах что у меня есть в разделе про RTTI такие операции как TEdit(TSomeObject) описывались как аналог AS. Или может я читал не внимательно   Что значит "испортишь объект"? А если, как написано выше Button3:=Button1, я и его "испорчу"?

- Что-то обычно я не встречал запорченных объектов ни после TClass1(class2) ни после class2 as TClass1. Обычно преобразования проходят если свойство происходит от общего предка (даже если его проявление "заблокировано" в потомках), и ничего страшного не происходит - например можно поменять Caption у объекта TEdit - и оно поменяется! - если сделать Docking TEdit то заголовок "докированной" формы будет именно тот на который поменян, а вот если типы не совместимы то хоть  TClass1(class2), хоть class2 as TClass1 генерят ошибку либо "Invalid typecast" либо "Abstract Error", но не AV

- Код TEdit и TButton - наследники TControl, в котором вводится свойство Color (на этом этапе иерархии оно скрыто). Некоторые наследники делают его видимым, но имеется и хранится оно у всех детей по одному адресу (новые поля у наследников добавляются в конец)highlightSyntax('delphijkwMzZ','delphi'); Само по себе насколько я помню, Color - это propeprty, так что на самом деле будет вызван какой-нибудь метод типа TEdit.SetColor, где self будет указывать на тот TButton. Сам по себе этот метод не меняет кажись никаких полей, а вызывает API на соответсвующем handle(которое храниться уже как поле в TWinControl?). Так что тут никаких данных опять таки перезаписанно не будет. Вот еще одно достоинство использования property! Шутка.

- В этом случае скажем еще раз: в Delphi переменная типа класса является указателем! Адрес ты этому указателю и задаешь, вызывая класс функцию Create, которая динамически создает объект, и возвращает указатель на этот объект.

- Спасибо, довольно исчерпывающе. Особенно про частные случаи. А то сразу - испортишь! в холодильнике хранить надо! Еще раз всем спасибо.

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | opengl программирование | программирование бейсик | программирование интерфейса | программирование pocket | программирование заказы | задача динамического программирования | prolog программирование | стохастическое программирование | процедурное программирование | история языков программирования | структура программирования | языки программирования высокого уровня | программирование устройств | функции программирования | программирование siemens | списки программирование | язык программирования java | олимпиада программирование | программирование мобильных телефонов | дипломная работа программирование | программирование palm | Ссылки

Все про процедурное программирование