DELPHISOURCE

Домой | Статьи | Книги | FAQ | Компоненты | Программы
Архив сайта | Реклама на сайте | Ссылки | Связь

Еще один пример работы оператора Case со строками


Перевод Руденко Е.В., Небесная сеть


Я хочу добавить элегантное и простое решение к статье 'Один из путей использования оператора Case со строками' .

Мое решение - это функция TokenNumber...

function TokenNumber(Source : string; const Delimeter, Token : string) : integer;

Ниже приведен пример использования ...

{s = ?}
case TokenNumber('CASE;ON;STRINGS;POSSIBLE;SOLUTION', ';', s) of
1 : ShowMessage('s = ''CASE''');
2 : ShowMessage('s = ''ON''');
3 : ShowMessage('s = ''STRINGS''');
4 : ShowMessage('s = ''POSSIBLE''');
5 : ShowMessage('s = ''SOLUTION''');
else
ShowMessage('s = unknown value');
end;
А вот сам код для функции TokenNumber...

function TokenNumber(Source : string; const Delimeter, Token : string) : integer;
var
i : integer;
begin
Result := 1;
while Result > 0 do {по всем "токенам" в строке Source}
begin
i := Pos(Delimeter, Source);
if ((i > 0) and (Token = Copy(Source, 1, i - 1))) or
((i = 0) and (Token = Source)) then {если верно, то }
Break; {конец }

if i > 0 then {если "токенов" больше ,то}
Delete(Source, 1, i + Length(Delimeter) - 1) {обрезание "не согласованных токенов" }
else {либо }
Result := -1; {конец }

Inc(Result);
end;
end;

The Unofficial Newsletter of Delphi Users - by Robert Vivrette
By Henrik P. Hansen - hphansen@agora.dk

 

Delphisource (2006г.)
Используются технологии uCoz