Здесь уже шел разговор о новых функциях ядра C55.
Вот еще несколько полезных:
MAP MODULE('Clarion RTL') GROUP::PutINI(*GROUP _Group,STRING _Section,STRING _INIFileName),NAME('Cla$PUTINIGROUP'),DLL(dll_mode) GROUP::GetINI(*GROUP _Group,STRING _Section,STRING _INIFileName),NAME('Cla$GETINIGROUP'),DLL(dll_mode) sLen(*STRING _Str),LONG,NAME('Cla$FastClip'),DLL(dll_mode) sLen(LONG _Size,LONG _Addr),LONG,NAME('Cla$FastClip'),DLL(dll_mode) END END
sLen — быстрый вариант определения длины строки STRING. Данная функция быстрее LEN(CLIP(STRING)) ~2 раза. Во-первых, за счет того, что не использует строковый стек, и Во-вторых, для строк длиннее 16 байт использует оригинальный алгоритм с наложением 4-байтной маски из пробелов.
К сожалению, не допускает форму использования (STRING _Str).
Процедуры GROUP::xxx позволяют сохранять/восстанавливать сразу всю группу. Группа автоматически «разворачивается» по полям:
TstGrp GROUP,PRE(TST) Name STRING(60) Code LONG Price DECIMAL(12,2) END TST:Name = 'Зубная паста' TST:Code = 12345 TST:Price = 35.00 GROUP::PutINI(TstGrp,'TstGrp',GLO:stNameINIFile)
запишет в файл GLO:stNameINIFile строки:
[TstGrp] TST:Name=Зубная паста TST:Code=12345 TST:Price=35