Главная страница
    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.007 c
14-70508
Stexen
2003-05-04 21:38
2003.05.22
Почта, не в тему но надо


3-70189
Maksimov
2003-05-03 20:24
2003.05.22
Текущая запись в DBLookupCombo


1-70304
d_oleg
2003-05-13 09:38
2003.05.22
размер колонки TField в пикселях


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


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский