Как добавить данные в блок из R/S?
Я пытаюсь добавить данные в block
из Red/System.
Red []
my-red-block: ["some text"] ; some already existen data in block
foo: routine [
blk
]
[
block/rs-append as red-block! blk as red-value! unicode/load-utf8 "new text" size? "new text"
]
foo my-red-block
print my-red-block
Я решил пройти block
к routine
и измените его там.
Я получаю сообщение об ошибке:
*** Runtime Error 1: access violation
*** at: 630EB4DFh
1 ответ
Решение
Причина в том, что load-utf8
возвращает node!
который ссылается на внешний строковый буфер, а не на string!
цените себя.
node!
по сути является указателем и не соответствует структуре высокоуровневых значений Red; однако, поскольку это указатель, его можно преобразовать в указатель другого типа, например,red-value!
или любую другую структуру. Сбой происходит, когда вы пытаетесь получить доступ к этому слоту искаженного значения.
Что касается исходного вопроса, это должно дать ответ.