View Issue Details

IDProjectCategoryView StatusLast Update
0000851Database ComparerGeneralpublic2019-04-18 19:46
Reportershirokov Assigned Tobarry  
PriorityhighSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Summary0000851: Ошибка при разборе хранимой процедуры в dbcIBParser.pas
DescriptionВ хранимой процедуре используется такая конструкция
        ((BIN_AND(DEVICE_TYPE, 0x1000001000000000) <> 0) OR (BIN_AND(DEVICE_TYPE, 0x1000002000000000) <> 0))

В dbcIBParser.pas идет анализ константы

  if (not HasSy) and (IBServerOptions.SQLServerVersion in [st_Firebird_25, st_Firebird_30]) then begin
    if (ch = '0') and ((CurCh()='x') or (CurCh()='X')) then begin
      // hex literal (integer)
      sy := IntValSy;
      GetChar();
      GetChar();
      StrVal := '';
      while CharInSet(ch, ['0'..'9','A'..'F','a'..'f']) do begin
        StrVal := StrVal + ch;
        GetChar();
      end;
      IntVal := StrToInt('$' + StrVal);
      HasSy := True;
    end

Т.к. в нашем случае '$' + StrVal = $1000001000000000 - ошибка внутри StrToInt (AVal: Integer), not valid integer value, что очевидно.
Но это полбеды: IntVal: Integer, а IntVal64 в классе, условно говоря, нет.
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2015-07-28 01:46 shirokov New Issue
2015-07-28 14:34 barry Status new => resolved
2015-07-28 14:34 barry Resolution open => fixed
2015-07-28 14:34 barry Assigned To => barry
2019-04-18 19:46 barry Status resolved => closed