Вопрос № 86878: Здраствуйте.
Подскажите, как разделити строку "a1|a2|a3" так, чтобы в переменной x1 оказалось "а1" в x2 - "а2" в x1 - "а3", средствами Delphi....
Вопрос № 86.878
Здраствуйте.
Подскажите, как разделити строку "a1|a2|a3" так, чтобы в переменной x1 оказалось "а1" в x2 - "а2" в x1 - "а3", средствами Delphi.
Отправлен: 14.05.2007, 18:47
Вопрос задал: Alxx (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Alxx!
Вы не сказали какого типа должны быть переменные x1,x2,x3 , потому приведу несколько возможных вариантов (хотя они все подобны...).
Когда x1,x2,x3 - строкового типа (string): var s,x1,x2,x3:string;
begin
s:='a1|a2|a3';
x1:=copy(s,1,pos('|',s)-1);
delete(s,1,pos('|',s));
x2:=copy(s,1,pos('|',s)-1);
delete(s,1,pos('|',s));
x3:=s;
end;
x1,x2,x3 - вещественного типа (real): var s:string;
x1,x2,x3:real;
begin
s:='3,4|12|56,7';
x1:=StrToFloat(copy(s,1,pos('|',s)-1));
delete(s,1,pos('|',s));
x2:=StrToFloat(copy(s,1,pos('|',s)-1));
delete(s,1,pos('|',s));
x3:=StrToFloat(s);
end;
x1,x2,x3 - целочисленного типа (integer): var s:string;
x1,x2,x3:integer;
begin
s:='3|12|56';
x1:=StrToInt(copy(s,1,pos('|',s)-1));
delete(s,1,pos('|',s));
x2:=StrToInt(copy(s,1,pos('|',s)-1));
delete(s,1,pos('|',s));
x3:=StrToInt(s);
end;
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 14.05.2007, 19:43
Отвечает: Esi
Здравствуйте, Alxx!
Если я правильно понял, то
a:="a1|a2|a3";
x1 :=copy(a,1,pos('|',a)-1);
a:=copy(a,pos('|',a)+1,length(a));
x2 :=copy(a,1,pos('|',a)-1);
x3:=copy(a,pos('|',a)+1,length(a));
P.S. Если данные записывать в array-массив, а не в переменные, то можно организовать цикл.
Ответ отправил: Esi (статус: 1-ый класс)
Ответ отправлен: 14.05.2007, 20:13
Отвечает: Denisss
Здравствуйте, Alxx!
Еще один способ (через использование функции PosEx) приведен в приложении.
Прим.:
Чтобы пример заработал, нужно в uses прописать модуль StrUtils.
Функции Pred и Succ возвращают число, уменьшенное или увеличенное на 1.
Удачи!
Приложение:
Ответ отправил: Denisss (статус: Профессионал) Россия, Москва WWW:Хлама много, по сути ничего... ICQ: 281599577 ---- Ответ отправлен: 14.05.2007, 20:57