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г.) |