Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
Лесник   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
14-70433
VEG
2003-04-30 00:35
2003.05.22
Сегодня у меня юбилей! Итоги, спасибы, размышления...


1-70390
Marina_S
2003-05-10 23:31
2003.05.22
Как определить, что Media Player закончил проигрывание файла?


3-70109
Consty
2003-04-29 17:09
2003.05.22
Как корректно редактировать поле с датой в dbGrid?


1-70255
Ghost
2003-05-12 11:36
2003.05.22
Как можно сохранить все данные из Listview на диск


3-70126
ALI
2003-04-28 19:36
2003.05.22
Как экспортировать БД из MDB формата в GDB формат ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский