Главная страница
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.017 c
3-70123
Ann
2003-04-30 13:06
2003.05.22
EhLib 2.0


8-70411
LeGaT
2003-02-10 22:58
2003.05.22
Сетевой графический редактор


14-70473
bokus
2003-05-01 20:34
2003.05.22
Через что лучше делать


3-70108
Mic_2000
2003-04-30 10:09
2003.05.22
Помогите с запросом разобраться


1-70222
ctapik-net
2003-05-11 14:34
2003.05.22
Проблема с порядком компонент в ToolBar