Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 815
от 20.05.2007, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 471, Экспертов: 90
В номере:Вопросов: 1, Ответов: 4


Вопрос № 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!

Используйте функции Pos, Copy:

X1 := copy(str, 1, Pos('|', str) - 1);
X2 := Copy(str, length(X1) + 1, length(str));
X2 := copy(X2, 1, Pos('|', X2) - 1);
X3 := Copy(str, length(X1) + length(X2) + 2, length(str));
X3 := copy(X2, 1, Pos('|', X3) - 1);

Ответ отправил: Лукьяненко Алексей Валериевич (статус: 8-ой класс)
Ответ отправлен: 14.05.2007, 18:54

Отвечает: Gh0stik
Здравствуйте, 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

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


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное