Как добавить данные в блок из 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!или любую другую структуру. Сбой происходит, когда вы пытаетесь получить доступ к этому слоту искаженного значения.

Что касается исходного вопроса, это должно дать ответ.

Другие вопросы по тегам