1. Если честно - то я не умею пользоваться DebugLog, наверно это только в C11 ?
Не надо Message() ! Если заданы, но не корректы Options - верните результат False, мы сами разберёмся с проблемой.
Иначе получатся, что метод выполняется в непредсказуемой форме, но с положительным результатом !
3. Логично, но ситуация развивается несколько иначе ...
В отсутствие п.4., New() выполняет вспомогательная процедура из класса json::LoadFile(), а список адресов
выделенной памяти ведёт (и выполняет их Dispose()) - уже прикладная программа ...
И да, я знаю, что этот вопрос можно решить через субклассинг.
4. Уже за это - спасибо.
Сейчас загрузку файлов вообще делаем вручную, а выгрузку костылим через IsStringRef:
Код: Выделить всё
! Загрузить из файла строку в BASE64
Class.IsLoadFile Procedure(String xFilename) !, *String
xContent &String
xBuffer &IDynStr
Code
xContent &= json::LoadFile(xFilename)
If Not (xContent &= Null)
xBuffer &= NewDynStr()
If Not (xBuffer &= Null) then xBuffer.Cat(ToBase64(xContent)) ! Содержимое файла в BASE64
Dispose(xContent) ! Пересоздать строку
xContent &= New(String(xBuffer.StrLen()))
xBuffer.CopyTo(xContent)
xBuffer.Kill; DisposeDynStr(xBuffer)
end
end
Return xContent