Главная страница
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.013 c
3-70156
Nikos
2003-05-02 11:10
2003.05.22
Как считать значение всех полей в БД по номеру строки?


1-70368
VOLKL
2003-05-10 12:29
2003.05.22
активация окна из треи


1-70244
Le!
2003-05-09 07:40
2003.05.22
Присвоение времени.


14-70487
The Dyckrill
2003-05-04 02:37
2003.05.22
ХЕХ


8-70410
Racer
2003-01-27 23:14
2003.05.22
Видимые/невидимые линии