![]() |
|
|
![]()
|
|
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Подскажите, как реализовать следующий алгоритм:
На форме есть 10 штук компонента Edit. Пользователь может ввести в эти окна в произвольном порядке следующие значения: int, short, double, VARIANT, BSTR, bool, long плюс значения (см. рисунок). Мне нужен алгоритм, который, проанализировав ввод пользователя, определил, сколько параметров заполнил пользователь и какие они имею значения. Например, пользователь написал в первом поле int 2, а во втором bool false. Алгоритм, проанализировав строки, дает понять, что в функцию надо передать цифру 2 и значение false. Помогите написать такой алгоритм анализа ввода. Я его уже реализовала, но это получился километр кода с огромным кол-вом операторов if. Очень не красиво. А если добавить еще один Edit то вообще получиться два километра кода. Ниже фрагмент моего кода где анализируется ситуация если пользователь заполнил только один Edit. Анализировать этот код не надо – он правильный, но такой подход порождает километр кода за ним. Подскажите, как сделать красиво?
Присоединённый файл ( Кол-во скачиваний: 21 )
1.gif 18,60 Kb |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Да я не вижу большой проблемы
Напишите функция, которая на входе получает строку, на выходе Variant и обработайте все свои десять едитов в цикле. Вот примерно как будет выглядеть функция
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| FFFFFFF7 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
кстати, вот вопрос. А зачем пользователю вводить имя типа? Почему бы не воспользоваться typeid()?
? --------------------
Да помоги кодеру, а значит - ближнему своему! |
||||
|
|||||
| FFFFFFF7 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
или нет... Ошибся. Всегда будет возвращать std::AnsiString. Прошу прощения.
--------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Vyacheslav, подскажите пожалуйста подробнее вашу идею.
Например, пользователь заполнил только три Edit-a, следующим образом: short 4; short 6; bool true; Тогда вызов вашей функции как правильно оформить в моем случае, так?:
Это сообщение отредактировал(а) Лена - 18.3.2007, 21:21 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Все, разобралась. Работает.
Оставила немного переделанный вариант:
|
|||
|
||||
![]()
|
| Правила форума "С++ 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. |