Could not convert variant of type (Null) into type

отредактировано 18:29 Раздел: FastScript
Hi All!!!

Example:

1: function Test(a, b: integer): string;
2: begin
3: if a > 10 then
4: Result := inttostr(a);
5: Result := Result + inttostr( ;) ;
6: end;

При вызове функции Test(154, 2), все работает.
При вызове Test(1, 2) получаем исключение в 5 строке,
Could not convert variant of type (Null) into type (String)
Тут все конечно понятно, можно обойти установкой в начале функции Result := '',
но как то некрасиво... попробуй объясни пользователю..

Комментарии

  • отредактировано 18:29
    Блин, смайлик...
    долно быть

    inttostr( b );
  • отредактировано 18:29
    А с чего ты взял что в пятой строке Result строковое? ;)
  • отредактировано 18:29
    2Stranger
    Так функция задекларирована как function Test(a, b: integer): string;
    а отсюда и предположение, что Result строковое... ;)
  • отредактировано 18:29
    Хех, пустая строка и null это две большие разницы. И null конвертится только в OleStr, в String нет. Поэтому у тебя в 5й строке когда a <= 10 никак стринг быть не может.
  • отредактировано 18:29
    2Stranger
    >>>null конвертится только в OleStr, в String нет.
    Да это все итак понятно..

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

    P:S: Что то нет вестей от разработчиков....
  • отредактировано 18:29
    Ну почему же, очень правильное и вполне предсказуемое поведение.
  • отредактировано 18:29
    2Stranger
    >>>Ну почему же, очень правильное и вполне предсказуемое поведение.
    Ага, для нас которые знаю что ядро скриптере базируется на Variant'е....
    А как же простые пользователи-настройщики наших поделок на базе скриптера, онито могут этого и незнать???

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.