Есть лист Excel, в котором организована числовая последовательность в 3-ех столбцах:
Номер счета / Дебетовый остаток / Кредитовый остаток
1001 / 569856 / 0
1002 / 8956/0
3056 / 0 / 3315685,23
и т.д.
Суть сводиться к следующему:
Пользователь открывает *.TXT файл, который де факто отражает СЦЕНАРИЙ расчета, который построен по собственному синтаксическому принципу, например начало *.TXT файла может быть таким:
- Код: Выделить всё
Касса=(&10100+&10101+&101101+&101107)/100000
$Касса_Временная=(&10100+&10101+&101101+&101107)/100000
КоррСчет=(&101200+&101207)/100000
Ностро=&101500/100000
МБК_Прод=(&101510+&101511+,
&101512+&101515+&101520+&101521+&101522+,
&101523+&101524+&101525+&101526)/100000
ДепозНБУ=(&101211+&101212)/100000
Овердрафт=(&102000+&102200)/100000
КредЮрЛиц=(&102040+&102045+&102050+&102055+,
&102061+&102062+&102065+&102070+,
&102071+&102073+&102074+&102075+,
&102100+&102105+&102110+&102115+,
&102116+&102046+&102056+&102066+,
&102076+&102106)/100000
Количество строк таких инструкций может быть до 1000. Количество сценариев (*.TXT файлов) – до 10 (но за один сеанс обрабатывается только один файл).
При этом, правила синтаксиса инструкций в *.TXT жестко предопределены, например:
; - начало комментария
&10ХХХХ – дебетовый остаток балансового счета ХХХХ
&20ХХХХ – кредитовый остаток балансового счета ХХХХ
Арифметический действия: "+","-","*","/" и скобки.
Операция_сравнения:
• ">" - "больше",
• ">=" - "больше или равно",
• "<" - "меньше",
• "<=" - "меньше или равно",
• "=" - "равно",
• "<>" - "не равно".
Один условный оператор: #if b>d #then r=3 #else r=4 #endif
Вопрос: как лучше идентифицировать такие инструкции к расчету?
То есть, такая инструкция как КоррСчет=(&101200+&101207)/100000 должна вести к появлению новой переменной КоррСчет для дальнейшей манипуляции с ней в самом Excel.
Ну, можно из текстовика считать такую строку, как:
- Код: Выделить всё
КредЮрЛиц=(&102040+&102045+&102050+&102055+,
&102061+&102062+&102065+&102070+,
&102071+&102073/215-&102074+&102075+,
&102100+&102105+&102110-&102115+,
&102116+&102046+&102056+&102066+,
&102076+&102106)/31685
Собрать ее в одну стринговую переменную.
А что дальше? Посимвольно просматривать всю строку на предмет появления жестко заданных правил синтаксиса и потом разбирать где какой синтаксис?
Боюсь долго будет….
Какой общий подход может быть в такой случае?