Запись в массив( do while)

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
rozum
Посетитель
Сообщения: 49
Зарегистрирован: 18 янв 2013, 13:23

Запись в массив( do while)

Сообщение rozum »

всем доброго вечера! помогите правильно прописать условие
Есть vpp который обрабатывает банковскую выписку
в выписке есть поля
^Nazn=^
^Nazn2=^
и получается так что поле Nazn(назначение платежа очень длинное поле которое может перескакивает и на 3 строки
поэтому при импорте в галактику берется только первая строка
( например
^Nazn=Здравствуйте я пишу здесь любой......................................
текст и в галактику попадет........................................................
только^
^Nazn2=что нибудь ещё......^
А в галактике в поле назначение платежа в первой строке"Здравствуйте я пишу здесь любой"
а во второй строке " что нибудь ещё......"

в коде объявлен массив t[1..24]
а поля эти прописываются
if ( substr(s,1,6) = '^Nazn=')
t[11] := replace (replace(s,'^',''),'Nazn=','')+sym;

if ( substr(s,1,7) = '^Nazn2=')
t[12] := replace (replace(s,'^',''),'Nazn2=','')+sym;
пробовала прописать do while но тогда фейс зависает(((((
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Запись в массив( do while)

Сообщение edward_K »

и как вы сие используете?
Есть возможность писать в файл - logstrtofile(logfilenm,w) - добавьте в свой код , чтобы понять где циклитесь.
Do while требует либо условия, которое бы в конце концов не выполнилось бы, либо break.
Иногда, когда не уверен, что условие не выполнится. добавляю переменную со счетчиком - если скажем она получила значение больше 10, то надо выполнить break(ну или условие на нее поставить в while). Проверка на счетчик должна быть в первых строках while(дабы избежать зацикливание по continue).
При разборе назначения также полезно использовать функцию GroupWrap
GroupWrap(строка:string,номер_подстроки:word,длина_подстроки:word )
Скажем пишем так:
в назначение 1(NAMEPL1) GroupWrap(_str,1,100)
в назначение 2(NAMEPL2) GroupWrap(_str,2,100)
в назначение 3(NAMEPL3) GroupWrap(_str2,1,100)
в назначение 4(NAMEPL4) GroupWrap(_str2,2,100)+GroupWrap(_str2,3,100)+GroupWrap(_str2,4,100) - там длина поля в 9 256 символов. Для последнего поля я иногда пишу свою функцию, в которой беру хвостик от предыдущих GroupWrap.
Ну или 1 назначение в 3 строки, а 2 - только в 4.
Tax - для структурированной налоговой информации.
Ответить