Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.31;
Скачать: CL | DM;

Вниз

case и string   Найти похожие ветки 

 
OlegM ©   (2003-03-18 13:52) [0]

Привет всем!
Как сделать что-бы case работал с переменной типа string


 
drpass ©   (2003-03-18 13:55) [1]

попроси у Borland исходные тексты компилятора и сделай так, как тебе хочется :)
case может работать только с простыми типами данных


 
eLVik ©   (2003-03-18 13:58) [2]

Case по определению может работать только с порядковыми типами данных, коим STRING не является. Если case"ов довольно много, то попробуй TStringList


 
Андрей Сенченко ©   (2003-03-18 14:29) [3]

можно конечно придумать суперизвращение основываясь на том, что string[i] - это собственно CHAR, то есть порядковый тип данных.

Но нужно ли это ?


 
Vlad Oshin ©   (2003-03-18 14:30) [4]

можть завести тип, где перечислить все варианты строк?


 
Андрей Сенченко ©   (2003-03-18 14:33) [5]

Vlad Oshin © (18.03.03 14:30)

Это грустно. Строки могут получаться извне ( из файла, ручной ввод и т.п.) и на этапе программирования содержать неизвестно что.
Если же работа идет по ИЗВЕСТНЫМ строкам, то здесь элементарно вводится TStringList например, в котором Case можно сделать по индексу например.

Задача нужна от автора. Так можно флудить сколько угодно


 
OlegM ©   (2003-03-18 14:38) [6]

Спасибо всем!
P.S
Мне надо было небольшой диапазон значений проверить так что использовал if


 
Юрий Зотов ©   (2003-03-18 22:37) [7]

Иногда применяется такой финт. Строки загоняем в StringList и пишем:

case StringList.IndexOf(S) of
-1: raise ...
0: ...
1: ...
...
end;


 
Style   (2003-03-19 10:29) [8]

Можно попробывать написать функцию которая сумирует все буквы текста умноженные на позицию. И возвращает Integer

function SumString(s: string): integer;
var
i: integer;
begin
result := 0;
for i := 1 to Length(s) do
begin
result := result + Ord(s[i])*i;
end;
end;

а далее

case SumString(s) of
SumString(s2): ...
SumString(s3): ...
SumString(s4): ...
end;


 
REA ©   (2003-03-19 10:35) [9]

Если нужно проассоциировать целые числа и строки то наверно THashedStringList. Еще можно посчитать Hash строки и с некоторой долей уверенности делать case. Еще можно проассоциировать объект или функцию со строкой и ее вызывать.


 
Style   (2003-03-19 10:41) [10]

>>
только вот так
result := result + Ord(s[i])*Ord(s[i])*i;


 
Style   (2003-03-19 11:17) [11]


function SumString(s: string): integer;

не просто суммировать не получится.. т.к. уникальное значение строки это порядковый номер при Переборе


 
Style   (2003-03-19 12:24) [12]

неполучиться и потому что в case прописываются только Const Extesions :)! а то можно было бы просто написать функцию проверки которая возвращает значение true тому case которому нужно..

например.

str := Value;
case true of
Compare(Str1):...
Compare(Str2):...
Compare(Str3):...
end;

function Compare(S: string): boolean;
begin
if(Value = S) then
result := true;
else
result := false;
end;

Эхх если было бы можно Сделать такую функцию которая возвращает константу :))


 
Андрей Сенченко ©   (2003-03-19 12:46) [13]

Style (19.03.03 12:24)
Эхх если было бы можно Сделать такую функцию которая возвращает константу :))

Эмнннн ... вот пример функции, возвращающей несмотря ни на что одну из самых фундаментальных констант
:)

function Constant(s:string; i:integer; r: real) : variant;
const
c = pi;
begin
result := c;
end;



 
Игорь Шевченко ©   (2003-03-19 12:49) [14]

Переходить на C# - там case со string"ами работает.


 
Style   (2003-03-19 12:56) [15]

>> Переходить на C# - там case со string"ами работает.

Да у C и работа с Pointer"ами поинтереснее. А какой синтаксис!

Жаль что у нас на работе на C Buildere не пишут.. Сам уже почти все забыл.

А писать сразу на двух языках неудобно. Постоянно даже самый простой синтаксис путать будешь

Будешь работать в C
вместо -> поставишь "." :) или наоборот!


 
Style   (2003-03-19 13:04) [16]

>>Андрей Сенченко но на выходе это уже будет Variant! :(



Страницы: 1 вся ветка

Текущий архив: 2003.03.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
14-100438
grrey
2003-03-13 15:13
2003.03.31
Вопрос. Как у программеров с памятью?


14-100450
sancho
2003-03-14 19:45
2003.03.31
Глупый вопрос...


14-100396
ч1
2003-03-13 17:28
2003.03.31
Как свернуть пр-му


3-100197
Lans
2003-03-12 10:33
2003.03.31
Как сделать сетевой Paradox


3-100180
Explorer
2003-03-13 08:32
2003.03.31
Locate