Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

Разбить строку на символы   Найти похожие ветки 

 
Лесник ©   (2003-05-10 20:42) [0]

Привет знатокам. Столкнулся со следующей проблемой. В Edit"e или DBEdit"e это без разницы выводиться строка (например фамилия) надо эту строку разбить на символы и каждому символу присвоить свою переменную, для последующей передачи этих переменных в отчет (freereport), в отчете фамилия выводиться следующим образом - каждая буква в своей клеточке (а клеточек например 20)можно сделать это через copy
var b,b1,b2,b3,b4:string;
....
b:=edtLastName.Text;
b1:=Copy(b,1,1);
b2:=Copy(b,2,1);
b3:=Copy(b,3,1);
b4:=Copy(b,4,1);
...

frVariables["b1"] :=b1;
frVariables["b2"] :=b2;
frVariables["b3"] :=b3;
frVariables["b4"] :=b4;

и так далее для всех двадцати полей, если бы это только для фамилии можно было бы мирится, но и еще кучу данных о персоне надо также разбить на символы. Получается очень длинный код. Знатоки поделитесь опытом как бы этот код можно было бы сократить.
Спасибо


 
Song ©   (2003-05-10 20:43) [1]

Разделяй данные символом разделителем, который точно знаешь, что не может встретиться в описании поля, например "|", потом в TStrings запихай.


 
Лесник ©   (2003-05-10 20:50) [2]

Но тогда возникнет проблема выполнения SQL запроса на отбор данных из НД, да и в других отчетах где не нужно разделение


 
Song ©   (2003-05-10 20:55) [3]

После выполнения запроса разделишь их также.


 
Vasiliy   (2003-05-10 20:55) [4]

Var I:Integer;
b:String;

b:=edtLastName.Text;
For I:=1 to Length(b) do frVariables["b"+IntToStr(I)] :=b[I];

Не уверен конечно что в frVariables можно комбинировать параметр, но вроде так должно работать


 
Лесник ©   (2003-05-10 21:33) [5]

2 Vasiliy
Спасибо работает, правда есть одна неприятность - в самом отчете количество полей должно быть равным количеству букв в слове. Если больше то получается ошибка. Но это уже поборем. Главное что работает. Еще раз всем спасибо.


 
Лесник ©   (2003-05-10 21:37) [6]

просто надо
Var I:Integer;
b:String;

b:=edtLastName.Text;
For I:=1 to 20 { Указать количество мемо полей в отчете} do frVariables["b"+IntToStr(I)] :=b[I];
и все проблемы



Страницы: 1 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-70241
Deadlock
2003-05-12 05:31
2003.05.22
Переопределение свойств


7-70543
ДмитрийВ
2003-03-24 23:38
2003.05.22
9й бит в rs-232 как проверять?


3-70098
Sirus
2003-04-29 17:53
2003.05.22
Как переташить базу из Access в Interbase???


6-70414
alexay
2003-03-25 09:51
2003.05.22
Синхронизация часов win98 с UNIX серверами


14-70476
Den
2003-05-03 09:14
2003.05.22
Цифры в слова