![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Деление String [D4, Win95/98]
Ghost! © (2002-01-11 18:40:00)Greetings!
Вопрос:
Есть 3 переменные: a, b, c. Все типа String. Переменная "a" содержит имя и фамилию человека, разделённые тремя проблемаи. Посдкажите плиз, как бы рациональнее сделать так, чтоб выделить в перемнную "b" только имя, а в переменную "c" только фамилию. Буду очень благодарен за помощь.
vlv (2002-01-11 20:51:00) [1]
procedure WrapString(Sourse, Wrapper: String; Strings: TStrings);
var
Ps, Ps2: integer;
Tmp: String;
begin
Tmp := Sourse;
repeat
Ps:= AnsiPos(Wrapper, Tmp);
if Ps = 0 then Ps := Length(Tmp) + 1
else Ps2 := Ps;
Strings.Add(Copy(Tmp, 1, Ps - 1));
Tmp := Copy(Tmp, Ps + Length(Wrapper), Length(Tmp));
until Ps = 0;
end;
Юрий Зотов (2002-01-11 20:19:00) [2]Sorry за повтор, но это не мой глюк.
iZEN (2002-01-11 19:52:00) [3]Лучше свой компонент написать по парсированию строк и выделению лексем -- иначе для новых задач замучаешься "придумывать" каждый раз с нуля :), а такие задачки встречаются часто.
Уж не знаю, о чём думали разработчики Delphi раз не включили такой нужный компонент(класс) в библиотеку VCL. В Java, например, такой класс есть стандартно, называется java.util.StringTokenizer.
Юрий Зотов (2002-01-11 19:17:00) [4]Или что-то типа этого:
B := Copy(A, 1, Pos(" ", A) - 1);
C := Copy(A, Length(B) + 4, Length(A) - Length(B) - 3);
Юрий Зотов (2002-01-11 19:16:00) [5]Что-то типа этого:
B := Copy(A, 1, Pos(" ", A) - 1);
C := Copy(A, Length(B) + 4, Length(A) - Length(B) - 3);
panov (2002-01-11 18:44:00) [6]Попробуй функцию WrapText