Код:
* --------------------------------------------------------------------------------------------------
* Импорт схемы вычисления МРЦ и МОЦ из файла настройки в массив схемы вычисления минимальных роз-
* ничных и оптовых цен. Файл Scheme.mc должен находится в каталоге программы. Структура массива
* {Список КВАП,градус от не включая,градус до включая,МРЦ,МОЦ}
* Никаких сообщений не выдаю, т.к. это возможная закачка информации в фоновом режиме
* Возврашается постоенный или пустой массив, если не будет файла или схемы цен в каталоге программ
FUNC aglImpMC()
LOCA aRet:={}, cStr:="", nI:=0, nLen:=0, cC:="", cS:="", cg:="", cp:=""
// Возвращаем пустой массив - не делаем расчеты по МЦ, если нет файла схемы
IF !File("Schema.mc") THEN RETU aRet
// Кодировка файла не важна - только важны цифры. Обход глюка NumToken/Token, когда пустые значения не считываются функцией
cStr := StrTran(StrTran(MemoRead("Schema.mc"),";"," ; "),","," , ")
// Построчно закачиваю в массив, отсеивая строки комментариев
nLen := NumToken(cStr,CRLF)
FOR nI := 1 TO nLen
cC := Alltrim(Token(cStr,CRLF,nI))
// Отсев мусорных строк файла схемы минимальных цен
IF !((Val(Left(cC,3)) > 0) .AND. (NumToken(cC,";") = 3)) THEN LOOP
// Закачиваю информацию в глобальный массив памяти. Для алгоритмов порядок информации не важен
cg := Alltrim(Token(cC,";",2))
cp := Alltrim(Token(cC,";",3))
aadd(aRet,{ Alltrim(Token(cC,";",1)),; // Список алкокодов
Val(Alltrim(Token(cg,",",1))),; // Градус от не включая
Val(Alltrim(Token(cg,",",2))),; // Градус до включая
Val(Alltrim(Token(cp,",",1))),; // МРЦ
Val(Alltrim(Token(cp,",",2))) }) // МОЦ
NEXT nI
RETU aRet