|
|
|
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
_hunter а с точки зрения грамотности будет выгоднее вынести это преобразование в отдельную функцию? При условии, что мне надо меня формат, т.е. кол-во отображаемых знаков после запятой?
|
|||
|
||||
_hunter |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
в отдельную функцию смысла нет ( разве что читаемость немного повысить )
можно в том месте, где задается число знаков и формировать строку формата: formatStr = "%0." + IntToStr(precision) + "f"; AnsiString().sprintf(formatStr, (double)(Sin(DegToRad(angle)))); -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Окей. Спасибо. Так и сделаю.
|
|||
|
||||
Mal Hack |
|
||||||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Хм, пишу вот так:
Выдает:
или
Выдает:
Объявленно, как:
|
||||||||||
|
|||||||||||
Partizan |
|
||||||
Let's do some .NET Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
Потому что слева у тебя char...а справа AnsiString...
Писать нужно так:
или так...
Либо вообще так:
Это сообщение отредактировал(а) Partizan - 6.1.2006, 18:36 -------------------- СУВ, Partizan. |
||||||
|
|||||||
Mal Hack |
|
||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Это в моем случае получается несколько не рационально. Воспользовался вариантом:
Эх, никак не могу привыкнуть, что AnsiString это не простая строка, а целый класс... Спасибо. Добавлено @ 18:43 Стоп. Выдает все равно [C++ Error] Unit2.cpp(39): E2277 Lvalue required |
||||
|
|||||
Partizan |
|
|||
Let's do some .NET Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
а...ну дык пральна...
если уж ты остановился на том варианте переопредели Prec так
-------------------- СУВ, Partizan. |
|||
|
||||
_hunter |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
+ не понятно чем AnsiString не нравится. почему бы ее и не использовать?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Mal Hack |
|
||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Когда подставляю в формат, мне пишет несоответствие типов cont char * и AnsiString.
Пробовал. Ругается вот так: [C++ Error] Unit2.cpp(39): E2235 Member function must be called or its address taken Т.е. мы как-то не правильно в указатель пишем. |
||||
|
|||||
Partizan |
|
||||||
Let's do some .NET Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
когда подставляешь в формат не забывай вызывать !!!c_str()!!! Prec.c_str() - это у тебя должно быть в формате в случае AnsiString Prec; гммм...щас посмотрим... E2235 Member function must be called or its address taken A reference to a member function must be called, or its address must be taken with & operator.... возможно ты опечатался... лично у меня следующий тест проходит на ура:
-------------------- СУВ, Partizan. |
||||||
|
|||||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
||||
|
||||
TIGERоX |
|
||||
начинающий... Профиль Группа: Участник Сообщений: 59 Регистрация: 7.9.2005 Репутация: 1 Всего: 1 |
используя ансистринг
если не нравится замени на char
Все должно ботать |
||||
|
|||||
Mal Hack |
|
||||||||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: нет Всего: 261 |
Не катит. Таже фигня. Может это уже особенности BDS, но факт остается фактом.
Такой вариант работает, но не хочу я каждый раз вызывать лишнюю функцию. В общем, сделал вот так:
Добавлено @ 22:39 Блин, а так AccessViolation выкидывает Добавлено @ 22:51
- Компилится, но когда подставляю формат, появляются какие-то квадраты |
||||||||
|
|||||||||
BreakPointMAN |
|
|||
Опытный Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
НУ МАТЬ МОЯ ЖЕНЩИНА!..
Нельзя, блин, так, блин, делать... блин... ибо "("%." + IntToStr( PrecComboBox -> ItemIndex ) + "f")" это временный объект... Нельзя взять его char*-представление, и потом использовать этот адрес для инициализации указателя... Временный объект будет разрушен после выполнения этой строки, и по указателю фиг знает что будет лежать, блин. -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
Partizan |
|
|||
Let's do some .NET Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 7 Всего: 67 |
А ты весь код приведи....вот и разберёмся...
-------------------- СУВ, Partizan. |
|||
|
||||
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |