|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.09.2013, 10:42 | #1 |
Пользователь
Регистрация: 12.08.2013
Сообщений: 99
|
Аналог Case для срок в Delphi 7
Есть ли в Delphi 7 Аналог Case для строк или какойнибудь отдельный модуль чтобы можно было работатьс case также как в VB Net
Хотел было написать код через Case используя не числовую а строковую переменную но не тут то было После написания кода в 200 строк он мне выдал ошибку говорящию что case не работает со строками. можно использовать иф но код будет раз в 10 тогда больше чем это сделать через Case Скажите самый эфективный способ сделать многомерное сравнение без иф аналогом case если он есть. |
01.09.2013, 11:13 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Нет такого способа. Дельфи строки нельзя проверить по сейсу. Существует дельфи фор дотнет где это можно (емнип), но это будет тот же дотнет.
Я скажу так, если у Вас код на 200 строк с кейсом по строкам - у Вас плохо запроектировано. Такие задачи могут быть в основном в анализаторах, и решаются они на совершенно ином уровне нежели кейс по строкам. Если у Вас строго известен набор возможных вариантов, то можно использовать енумы - специальный тип с именованными значениями, например: Код:
Есть и специальное средство GetEnumName + GetEnumValue + TypeInfo (модуль TypInfo), которое позволяет конвертировать енум в строку и обратно, им можно реализовать Вашу задачу. Однако, если же строка произвольная (что, конечно, малореально, если Вы таким образом поставили вопрос) - то точно ничего не поможет, кроме пачки иф. |
01.09.2013, 12:01 | #3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
01.09.2013, 12:21 | #4 | |
Участник клуба
Регистрация: 24.07.2009
Сообщений: 638
|
Цитата:
Но тут два момента: - Case требует константы в перечислении. Поэтому придется писать значения хеш функции. - Хеши строк теоретически могут совпадать, но практически не встречалось. Да, и еще вариант - индексировать строки: Код:
** Удача терпелива. **
Vad3333@inbox.ru Последний раз редактировалось Stilet; 01.09.2013 в 14:29. |
|
01.09.2013, 18:26 | #5 | |
Участник клуба
Регистрация: 11.08.2012
Сообщений: 1,226
|
Цитата:
Код:
|
|
01.09.2013, 19:01 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Код:
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
3 задания на Delphi, срок -вечер 1 июня (до 22 по Москве) | Dimitrius_92 | Фриланс | 11 | 31.05.2010 20:48 |
аналог функции case | redfield | Microsoft Office Excel | 3 | 05.05.2010 12:25 |
Не могу сделать на Delphi аналог phpMyAdmin для MySQL 4 | Daniel_90 | БД в Delphi | 3 | 05.03.2009 09:57 |
Контрольная по Delphi. Срок 18 часов, оплата WM. | PUH | Фриланс | 2 | 08.12.2008 17:46 |
Аналог паскалевского case | MusicMan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 21.04.2008 22:10 |