Проблемы работы скриптов в версии 1.8
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
Скриптов таких полно как заставить их работать?
(в предыдущей версии все работает, то есть дело точно не в даных а в интерпретаторе)
Исполнение зацикливается на строке в 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
Скриптов таких полно как заставить их работать?
(в предыдущей версии все работает, то есть дело точно не в даных а в интерпретаторе)
Комментарии
q.ParamByName('Nomer').Value
?
У меня на ParamByName сваливается с ошибкой стека
проблемы у меня с подключением класса TOraQuery - на С я не могу скомпилить код (см. сообщение ниже), на паскале вроде код собрался, класс виден, но попытки вызова ParamByName или даже простой new TOraQuery() дает ошибку стека.
Взял демопроект 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 не зарегистрированы свойства
А ведь раньше то работало.
Где в исходниках исправить?
Возникает из за того что в 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}
Спасибо автору за внимание и оперативную реакцию на возникающие вопросы