Проблемы работы скриптов в версии 1.8

отредактировано 15:33 Раздел: FastScript
1. Сложная диалоговая форма с событиями на выход из полей ввода перестала работать при переходе на версию FastScript 1.8 с 1.6

Исполнение зацикливается на строке в unit fs_iinterpreter

if (Item is TfsCustomHelper) and not Item.IsMacro then
while Item.FLocked do;

, которой не было в версии 1.6.

После того как я её закоментировал все заработало. В чем может быть ошибка?

2. Во всех предыдущих версиях работало такое использование параметров запросов


q.ParamByName('Nomer').Value := Nomer;


А теперь ругается на то что Field 'Nomer' is of an unsupported type

Скриптов таких полно как заставить их работать?
(в предыдущей версии все работает, то есть дело точно не в даных а в интерпретаторе)

Комментарии

  • [m][m]
    отредактировано 15:33
    извини что вмешиваюсь, но как ты заставил работать конструкцию
    q.ParamByName('Nomer').Value
    ?
    У меня на ParamByName сваливается с ошибкой стека
  • Eugene LachinovEugene Lachinov Санкт-Петербург
    отредактировано 15:33
    Видимо нужно обращаться в службу поддержки по E-Mail, эти ошибки исправлены в последних версиях FastScript, который идет с FastReport
  • [m][m]
    отредактировано June 2005
    у меня вроде как раз такая версия и есть - 1.8 которая вместе с fastreport...
    проблемы у меня с подключением класса TOraQuery - на С я не могу скомпилить код (см. сообщение ниже), на паскале вроде код собрался, класс виден, но попытки вызова ParamByName или даже простой new TOraQuery() дает ошибку стека. :/
  • отредактировано 15:33
    [m] написал:
    извини что вмешиваюсь, но как ты заставил работать конструкцию
    q.ParamByName('Nomer').Value
    ?
    У меня на ParamByName сваливается с ошибкой стека
    Сразу после регистрации класса TParams появляется возможность обращаться к published свойству Value
  • отредактировано June 2005
    Eugene Lachinov написал:
    Видимо нужно обращаться в службу поддержки по E-Mail, эти ошибки исправлены в последних версиях FastScript, который идет с FastReport

    Взял демопроект FastReport 3 (от 25.06.2005)

    Создал запрос q

    В скрипте повесил обработчик:

    q.DatabaseName := 'DBDemos';
    q.SQL.Clear;
    q.SQL.Add('Select * from "orders.db" where CustNo=:Nomer');
    q.ParamByName('Nomer').Value := 6;
    q.Open;

    Все та же проблема - не указан тип.
    А тип указать явно невозможно (отсутствует регистрацич свойств класса TParam), то есть нельзя написать

    q.ParamByName('Nomer').AsInteger := 6;
    Так как для класса TParam не зарегистрированы свойства

    А ведь раньше то работало.


    Где в исходниках исправить?
  • отредактировано 15:33
    Ошибка с ParamByName('Nomer').Value := 6

    Возникает из за того что в Delphi7 число 6 передается как Int64 а не как Integer

    а TQuery не поддерживает Int64

    решается так:

    function ParserStringToVariant(s: String): Variant;
    var
    i: Int64;
    k: Integer;
    iPos: Integer;
    begin
    Result := Null;
    if s <> '' then
    if s[1] = '''' then
    Result := Copy(s, 2, Length(s) - 2)
    else
    begin
    Val(s, i, k);
    if k = 0 then
    {$IFDEF Delphi6}
    // Vad Result := i
    Result := Integer(i)
    //
    {$ELSE}
    Result := Integer(i)
    {$ENDIF}


    Спасибо автору за внимание и оперативную реакцию на возникающие вопросы ;)

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

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