- Велосипед: SysLibMem — динамическое выделение памяти.
- Не велосипед: реализация списков в библиотеке OSCAT.
А почему формат текстовый? Может, лучше перед заливкой в ПЛК переводить в бинарный? Я вот в своём проекте вообще сделал без всякого разбора чтение напрямую из файла:
Код:
TYPE CONFIG : (* Формат файла соответствует формату этой структуры *)
STRUCT
header: DWORD;
(* тут поля структуры *)
checksum: DWORD;
END_STRUCT
END_TYPE
FUNCTION ReadConfig : CONFIG
VAR_INPUT
filename: STRING;
END_VAR
VAR
handle: DWORD;
cfg: CONFIG;
END_VAR
(* Читаем весь файл в структуру за раз *)
SysMemSet(ADR(cfg), 0, SIZEOF(cfg));
handle := SysFileOpen(filename, 'r');
IF handle > 0 THEN
SysFileRead(handle, ADR(cfg), MIN(SysFileGetSize(filename), SIZEOF(cfg)));
SysFileClose(handle);
END_IF
(* Ну а дальше проверка на целостность по контрольной сумме с загрузкой
настроек по умолчанию при несоответствии и прочие предосторожности *)