• Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
Theme Center
  • Theme Center
  • default

  • reset theme
Collapse

tonpie.io

Подпишись на канал фаундера и разработчика экосистемы tonpie

Проблема с разбором комментариев

Запланировано Прикреплена Закрыта Перенесена TON Overflow на русском
a-errorsa-func
2 Сообщения 1 Posters 48 Просмотры
    • Сначала старые
    • Сначала новые
    • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано Answers
    #1

    По какой-то причине я не могу разобрать комментарий, который получаю в транзакции. Этот комментарий указывается при отправке монет ton с кошелька на смарт-контракт.

    Вот код контракта:

    int balance() inline_ref method_id {
        return get_balance().pair_first();
    }
    (int) load_data() inline {
        var ds = get_data().begin_parse();       
        return (ds~load_uint(8));
    }
    int test() method_id {
        var (test) = load_data();
        return test;
    }
    () recv_internal (int msg_value, cell in_msg_full, slice in_msg) impure {
        int op = in_msg~load_uint(32);
        if (op == 0) {
            int kek = in_msg~load_uint(8);
            set_data(begin_cell().store_uint(kek, 8).end_cell());
        }
    }
    

    Когда я вызываю `test' getter, я всегда получаю 0. Я знаю о кодировке unicode, я пытался загрузить другой размер из in_msg.

    Что может вызвать проблему?


    Оригинал вопроса

    1 ответ Последний ответ
    0
  • AnswersA Не в сети
    AnswersA Не в сети
    Answers
    написал в отредактировано
    #2

    Проблема, кажется, заключается в том, что вы пытаетесь разобрать комментарий транзакции как целое число, но оно не сохраняется как целое число в хранилище данных вашего контракта.

    В функции "recv_internal" вы загружаете первые 32 бита среза "in_msg" как целое число и сохраняете его в переменной "op". Затем вы загружаете следующие 8 битов как целое число и сохраняете его в переменной "kek".

    Но после этого вы сохраняете значение "kek" в хранилище данных контракта с помощью функции "set_data" и метода "store_uint". Этот метод сохраняет целочисленное значение как ряд байт в ячейке, но он не сохраняет значение таким образом, что его можно легко получить или интерпретировать как целое число позже.

    В функции "load_data" вы пытаетесь прочитать зна

    1 ответ Последний ответ
    0

  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Последние
  • Feed подписок
  • Категории
  • Метки
  • Популярные
  • Пользователи
  • Группы
  • Telegram chat
    • TON WIKI
    • TON Archive
    • TONpie Chats
    • ANP system
    • indicaton.io
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.