powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите с кодом
2 сообщений из 2, страница 1 из 1
Помогите с кодом
    #38966409
Focto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться с кодом, PowerScript только начинаю изучать.
Decimal, Long, String, Integer это типы данных.

Скрипт делает следующее:
загружает текстовый файл и формирует на его основе список.

Опишите , пожалуйста как работает скрипт.



Decimal lda_empty[]
Long lla_empty[]

gla_nabor_tu = lla_empty
gda_nabor_tu = lda_empty
gda_nabor_cena = lda_empty

Decimal ld_kolfakt
Long ll_handle, ll_error, ll_pos, ll_count, ll_l, ll_tu, ll_errors
String ls_docname, ls_named, ls_line, ls_razdel = ';', ls_CurrentDir, ls_nomer
Integer li_value

n_cst_string uo_str

ls_CurrentDir = space (256)
ll_l = 256
ll_l = GetCurrentDirectory (ll_l, ls_CurrentDir)
ls_CurrentDir = left (ls_CurrentDir, ll_l)

li_value = GetFileOpenName("Открыть файл", ls_docname, ls_named, "TXT", "Текстовые файлы (*.TXT),*.TXT")

SetCurrentDirectory (ls_CurrentDir)

IF li_value = 1 THEN

ll_handle = FileOpen ( ls_docname, LineMode!, Read!, LockReadWrite!, Replace! )
IF ll_Handle > 0 THEN
DO WHILE ll_error <> -100
ll_error = FileRead(ll_handle,ls_line)
IF ll_error = - 100 or lower(ls_line) = 'end' THEN
EXIT
END IF

ll_pos = Pos(ls_line,ls_razdel)
ls_nomer = Mid(ls_line,1,ll_pos -1)
ls_line = Right( ls_line, len(ls_line) - ll_pos )

SELECT "id" INTO :ll_tu FROM "office"."tu" WHERE "nomer" = :ls_nomer ;
IF sqlca.SqlCode = 0 THEN

ll_pos = Pos(ls_line,ls_razdel)
ld_kolfakt = Dec(Mid(uo_str.of_globalreplace(Trim(ls_line),'.',','),1,ll_pos -1))
ls_line = Right( ls_line, len(ls_line) - ll_pos )
IF ld_kolfakt > 0 THEN
gla_nabor_tu[UpperBound(gla_nabor_tu)+1] = ll_tu
gda_nabor_tu[UpperBound(gda_nabor_tu)+1] = ld_kolfakt
END IF
ll_count ++
ELSE
f_warning('Код '+ls_nomer+' не найден !')
ll_errors ++
END IF
LOOP
FileClose(ll_handle)

f_warning('Обработано '+String(ll_count)+' строк, не найдено '+String(ll_errors)+' !')

wf_nabor(11)

ELSE
f_warning('Файл '+ls_docname+'~nНЕ НАЙДЕН !')
END IF

END IF
...
Рейтинг: 0 / 0
Помогите с кодом
    #38968362
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обнуляем переменные
Код: sql
1.
2.
3.
gla_nabor_tu = lla_empty
gda_nabor_tu = lda_empty
gda_nabor_cena = lda_empty


Получаем текущую директорию
Код: sql
1.
2.
3.
4.
ls_CurrentDir = space (256)
ll_l = 256
ll_l = GetCurrentDirectory (ll_l, ls_CurrentDir)
ls_CurrentDir = left (ls_CurrentDir, ll_l)


Получаем имя файла для открытия
Код: sql
1.
li_value = GetFileOpenName("Открыть файл", ls_docname, ls_named, "TXT", "Текстовые файлы (*.TXT),*.TXT")


Устанавливаем предыдущую директорию
Код: sql
1.
SetCurrentDirectory (ls_CurrentDir)


Если файл выбран, начинаем читать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
IF li_value = 1 THEN

ll_handle = FileOpen ( ls_docname, LineMode!, Read!, LockReadWrite!, Replace! )
IF ll_Handle > 0 THEN
DO WHILE ll_error <> -100
ll_error = FileRead(ll_handle,ls_line)
IF ll_error = - 100 or lower(ls_line) = 'end' THEN
EXIT
END IF


Парсим параметры
Код: sql
1.
2.
3.
ll_pos = Pos(ls_line,ls_razdel)
ls_nomer = Mid(ls_line,1,ll_pos -1)
ls_line = Right( ls_line, len(ls_line) - ll_pos )


Получаем данные из БД и заполняем массив данных
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT "id" INTO :ll_tu FROM "office"."tu" WHERE "nomer" = :ls_nomer ;
IF sqlca.SqlCode = 0 THEN

ll_pos = Pos(ls_line,ls_razdel)
ld_kolfakt = Dec(Mid(uo_str.of_globalreplace(Trim(ls_line),'.',','),1,ll_pos -1))
ls_line = Right( ls_line, len(ls_line) - ll_pos )
IF ld_kolfakt > 0 THEN
gla_nabor_tu[UpperBound(gla_nabor_tu)+1] = ll_tu
gda_nabor_tu[UpperBound(gda_nabor_tu)+1] = ld_kolfakt
END IF
ll_count ++
ELSE
f_warning('Код '+ls_nomer+' не найден !')
ll_errors ++
END IF
LOOP


Закрываем файл
Код: sql
1.
FileClose(ll_handle)


Ваши местные функции и сообщения
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
f_warning('Обработано '+String(ll_count)+' строк, не найдено '+String(ll_errors)+' !')

wf_nabor(11) //Какая-то обработка набора

ELSE
f_warning('Файл '+ls_docname+'~nНЕ НАЙДЕН !')
END IF

END IF 


С вас 15 У.Е. :)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Помогите с кодом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]