Could not convert variant of type (Null) into type
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 := '',
но как то некрасиво... попробуй объясни пользователю..
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 := '',
но как то некрасиво... попробуй объясни пользователю..
Комментарии
долно быть
inttostr( b );
Так функция задекларирована как function Test(a, b: integer): string;
а отсюда и предположение, что Result строковое...
>>>null конвертится только в OleStr, в String нет.
Да это все итак понятно..
Просто поведения скриптового языка отличается от паскалевского....
И эта особенность нигде не документирована....
И вывод напрашивается сам собой, либо RESULT в TfsProcVariable инициализировать в соответствии с возвращаемым типом, либо такое поведение задокументировать....
Иначе программирование на скриптере превращается в ходьбу по минному полю....
P:S: Что то нет вестей от разработчиков....
>>>Ну почему же, очень правильное и вполне предсказуемое поведение.
Ага, для нас которые знаю что ядро скриптере базируется на Variant'е....
А как же простые пользователи-настройщики наших поделок на базе скриптера, онито могут этого и незнать???