![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Доброго времени суток.
Имеется массив FValues
В качестве T будут выступать Integer или Double. Каким образом можно преобразовать значение FValues в строку? Format и FloatToStr говорят об отсутствии необходимой перезагруженной функции. Заметил, что складывать элементы массива тоже не получается... Это сообщение отредактировал(а) Keeper89 - 21.2.2010, 21:31 |
|||
|
||||
DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
По одному оправляешь во FloatToStr и складываешь в строке, только когда отправляешь элемент попробуй вот так FloatToStr(FValues[i] as float)
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." ![]() ![]() ![]() |
|||
|
||||
Keeper89 |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Тогда уж
Но, такой тайпкаст все-равно не работает:
|
||||
|
|||||
bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Похорошему тут бы использовать Constraints, но к сожалению в дельфи нет ограничения numeric
В рантайме ты можешь узнать конкретный тип так
Добавлено @ 22:24 DarkProg, в дельфи примитивные типы - не классы, им нельзя делать AS Добавлено @ 22:29 Еще посмотри на эту процедуру из Generics.Defaults
Идея должна быть ясна Это сообщение отредактировал(а) bems - 21.2.2010, 22:40 -------------------- Обижено школьников: 8 |
||||
|
|||||
profesiachuvak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 7.11.2009 Где: Беларусь, Минск Репутация: 1 Всего: 4 |
Если я правильно понял суть проблемы, то вот пример с T : integer;
Это сообщение отредактировал(а) profesiachuvak - 21.2.2010, 22:37 -------------------- Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
profesiachuvak, суть проблемы чтобы написать код, который бы работал и для Integer и для Extended
Добавлено через 29 секунд Keeper89, подправил пример -------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
bems,
спасибо, сделал тестовый пример так:
Т.е. сначала мы определяем тип переменной, а затем обращаемся к ней через указатель (никак иначе), верно? Это сообщение отредактировал(а) Keeper89 - 22.2.2010, 00:43 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Ну да, сравнивая указатель на RTTI. Обычный каст тут не проходит, наверное потому что компилятор не может тут лаже проверить корректность размера типов в памяти.
Можно порыть RTTI и на более элегантные решения. Плясать от
-------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
ОК, пороюсь, а тему пока прикрою.
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Еще вопрос появился
![]()
Скорее всего что-то я напутал, т.к. значения не изменяются. FItems - TList<T>. И еще вопрос: все возможные типы T - числовые (дробные или целые) и некоторые операции у них одинаковые (например сложение, сравнение и т.п.). Возможно ли написание более универсального кода без определения типа в каждом случае? Это сообщение отредактировал(а) Keeper89 - 23.7.2010, 01:41 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
item в теле цикла нужно рассматривать как const. Не случайно без @ тебе компилятор не дает присвоить
-------------------- Обижено школьников: 8 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
Ясно, но как тогда присвоить FItems[i] значение?
И Это сообщение отредактировал(а) Keeper89 - 24.7.2010, 12:43 |
|||
|
||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
bems, а если через обычный for..to..do - это возможно?
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
да
-------------------- Обижено школьников: 8 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |