![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сответствие типов методом исследования [D7, XP]
Tifon © (2007-01-03 17:17:00)Реально ли это сделать именно в Делфи 7(6) или паскале, помогит плз. Нигде не могу найти ответ на этот вопрос.
Tifon (2007-01-04 17:14:00) [1]to ors_archangel
Спасибо тебе за ответ, наверно ты единственный кто понял мой неправильно заданный вопрос.
А дело в том что, у меня друг учиться в универе на экономиста и им такое задали, ну он и попросил меня узнать что-нибудь по этому, а вопрос просто звучал так "Соответствие типов методом исследования", и он ничего не понял и я тоже, поэтому еще раз спасибо и простите за такую эхинею.
ors_archangel (2007-01-04 16:38:00) [2]
> Реально ли это сделать именно в Делфи…
> …понятно, а теоретически этот вопрос объясните пожалуйста,
> как обрабатывает это компилятор и как можно определить
> вручнуют соответствуют ли типы друг другу?
1
В общем случае типы в Делфи использует только компилятор, они далеко не всегда существуют как доступные сущности в run-time, например, нет оператора typeof или любых других, которые могли бы принимать, передавать, и собственно, оперировать типами как таковыми. Мало что дающее исключение здесь составляют т.н. class-reference переменные, которые позволяют нам ссылаться не на экземпляр класса, а на сам класс, как таковой. Т.о. в общем случае только компилятор имеет возмоность опеределять, "соответствуют" ли типы друг другу, подозреваю, что под соответсвием имелась в виду совместимость, тогда совместимость определяется оч просто: любые не объектные и не классовые типы не совместимы (но их псевдонимы могут быть совместимы, если обратное не указано явно с помощью ключевого слова type), типы объектов/классов имеют совместимость, если они имеют общего предка, что всегда верно в случае с классами, но не всегда в случае с паскалевскими объектами. Из всего этого следует, например, идиотский вывод, что любые записи, даже содержащие, например по одному integer-полю никогда не могут быть совместимы в принципе. Существует огромное множество исключений, связанных в том числе с т.н. расширенным синтаксисом Паскаля, так и, например, с модификаторами var,in,out, которые требуют "большей" совместимости, если так можно выразиться
2
Только в некоторых случаях с классами, или, если ты сделаешь собственный RTTI или… возможно достичь [6] - но, как я понял, это не то, чего ты хочешь, потому что в данном случае мы не используем средства языка, а практически используем ЯП, чтобы обеспечить функциональность, которую ЯП концептуально не имеет, следовательно код будет скорее всего ужасный, нудный, малоэффективный и совершенно не наглядный (все признаки того, что для решения задачи выбран не подходящий язык)
3
Совершенно не понимаю связь между "Сответствие типов методом исследования" и "соответствуют ли типы друг другу" - разве не разные вещи?
ИМХО первое суть что-то философсое, второе же - чисто техническое
Tifon (2007-01-04 15:35:00) [3]To Palladin
Понял, извиняйте за оплошность, больше неповториться.
Palladin (2007-01-03 18:57:00) [4]Задавай вопросы конкретней или опиши задачу. Твои вопросы выглядят как "Объясните как человек ходит и как можно делать это в ручную?"
Tifon (2007-01-03 18:24:00) [5]понятно, а теоретически этот вопрос объясните пожалуйста, как обрабатывает это компилятор и как можно определить вручнуют соответствуют ли типы друг другу?
Palladin (2007-01-03 18:04:00) [6]Variant + F1
если, конечно, я нашел вопрос на этот ответ...
umbra (2007-01-03 18:02:00) [7]все уже готово, делфи сам проверяет, соответствуют два типа или нет. Главное - их объявить
Tifon (2007-01-03 17:49:00) [8]Извиняйте не совсем правильно выразился, просто я уже в отчаянии.
Можноли в делфи создать алгоритм который будет проверять соответствуют два типа или нет? и как это можно описать теоретически, даже если не возможно практически?
Palladin (2007-01-03 17:47:00) [9]Нигде не могу найти вопрос на этот ответ.
umbra (2007-01-03 17:46:00) [10]
> Нигде не могу найти ответ на этот вопрос.
>
не заметил ни одного вопросительного знака :)