2 / 2 / 0
Регистрация: 18.08.2015
Сообщений: 48
|
|||||||||||
1 | |||||||||||
Как объявить тип эквивалентный другому типу?16.11.2017, 16:16. Показов 1222. Ответов 8
Всем привет,
Не могу разобраться с пользовательскими типами - массивами. Для передачи массива в виде аргумета, у меня объявлены подобные типы:
Мне нужно присвоить переменной типа DoubleArr значение типа array of double (Класс из другого юнита содержит значение в таком виде) То есть ситуация примерно такая:
Понимаю что объявления переменных разные, но фактически же в переменных один и тот же тип! Скажите пожалуйста может как то можно сделать преобразование типов, или надо по значениям в цикле перебивать из одного массива в другой? Как то это глупо мне кажется... Или если в одном юните так объявлен тип DoubleArr и в другом точно так же, то ему тоже не нравится: ошибка: [dcc32 Error]: E2010 Incompatible types: 'Unit1.DoubleArr' and 'Unit2.DoubleArr'
0
|
16.11.2017, 16:16 | |
Ответы с готовыми решениями:
8
как приводить тип к другому типу? Как объявить тип Tshape ? Приведение к другому типу Приведение переменной к другому типу |
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
16.11.2017, 16:24 | 2 |
Проще объявить тип 1 раз в отдельном модуле и ими пользоваться во всех юнитах.
0
|
16.11.2017, 16:45 | 3 | ||||||||||
если уж на то пошла такая пьянка))) то можно так
Добавлено через 5 минут можно еще так... если уж снова такая пьянка)))
0
|
2 / 2 / 0
Регистрация: 18.08.2015
Сообщений: 48
|
||||||
17.11.2017, 09:23 [ТС] | 4 | |||||
т.е. как я понимаю юнит с объявлением общих типов и констант и подключать его к каждому другому юниту? Хорошая идея)
Такой способ тоже решил проблему!
0
|
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
|
|
18.11.2017, 02:09 | 6 |
Если говорить о Дельфи/Паскале, то такой способ не только проще, но и единственно грамотный.
А проблемы с совместимостью типов, это проблемы индейцев. (Которые шерифов не волнуют Добавлено через 17 минут Только твою локальную проблему в данном твоём локальном коде. Но! При использовании прямого приведения типов Дельфи отдаёт тебе на откуп все проблемы, которые могу возникнуть из-за твоей ошибки. Точнее ты сам принимаешь на себя ответственность за то, что такое приведение типов - верное. А с ошибками, если они возникнут, разбирайся сам.
0
|
2 / 2 / 0
Регистрация: 18.08.2015
Сообщений: 48
|
|
21.11.2017, 16:01 [ТС] | 7 |
Это я для простоты примера так написал, на самом деле:
массив типа "array of Double" это поле совсем отдельного класса, рассчитываемого в другом потоке, а обрабатывать мне его уже надо у себя с помощью функции принимающей тип "DoubleArr"
0
|
Житель Земли
|
|
21.11.2017, 16:44 | 8 |
да какая нафик разница, в каком поле и в каком потоке это обрабатывается? объяви свой тип DoubleArr в отдельном модуле, подключи его ко всем модулям, использующим DoubleArr и все будет работать.
по аналогии с системными типами мыслей не возникает никаких? когда ты объявляешь переменную, например типа TPoint, где этот TPoint находится, как ты думаешь?
0
|
2 / 2 / 0
Регистрация: 18.08.2015
Сообщений: 48
|
|
21.11.2017, 16:49 [ТС] | 9 |
Да я понял уже это и сделал уже так))
Добавлено через 1 минуту я сразу так решил сделать, но отметил что 2й способ тоже решил мою проблему.
0
|
21.11.2017, 16:49 | |
21.11.2017, 16:49 | |
Помогаю со студенческими работами здесь
9
Как типу String^ присвоить тип char[]? Привести один тип к другому. Тип универсальный, параметризируется другими типами Приведение указателя на void к другому типу? Как по типу массива узнать тип его элементов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |