Format не работает в FS от FR3.08 и 3.10

отредактировано 09:12 Раздел: FastScript
1.Следующий код скрипта:
var
  I: Integer;
begin
  I := 123;
  ShowMessage('IntToStr(I)='+IntToStr(I)+#13#10+
    Format('Format(I)=%d', [I]));
end.
Выводит
IntToStr(I)=123
Format(I)=0


2.Хорошо бы иметь GetVersion релизов.

Комментарии

  • отредактировано 09:12
    Поправьте fs_itools.pas:
    procedure VariantToVarRec(v: Variant; var ar: TVarRecArray);
    var
      i: Integer;
    begin
      SetLength(ar, VarArrayHighBound(v, 1) + 1);
    
      for i := 0 to VarArrayHighBound(v, 1) do
        case TVarData(v[i]).VType of
          varSmallint, varInteger, varByte:
            begin
              ar[i].VType := vtInteger;
              ar[i].VInteger := v[i];
            end;
    {$IFDEF Delphi6}
          varInt64:
            begin
              ar[i].VType := vtInt64;
              New(ar[i].VInt64);
              ar[i].VInt64^ := v[i];
            end;
    {$ENDIF}
          varSingle, varDouble, varCurrency, varDate:
            begin
              ar[i].VType := vtExtended;
              New(ar[i].VExtended);
              ar[i].VExtended^ := v[i];
            end;
          varBoolean:
            begin
              ar[i].VType := vtBoolean;
              ar[i].VBoolean := v[i];
            end;
          varOleStr, varString:
            begin
              ar[i].VType := vtString;
              New(ar[i].VString);
              ar[i].VString^ := v[i];
            end;
          varVariant:
            begin
              ar[i].VType := vtVariant;
              New(ar[i].VVariant);
              ar[i].VVariant^ := v[i];
            end;
        end;
    end;
    
    procedure ClearVarRec(var ar: TVarRecArray);
    var
      i: Integer;
    begin
      for i := 0 to Length(ar) - 1 do
        if ar[i].VType in [vtExtended, vtString, vtVariant {$IFDEF Delphi6}, vtInt64 {$ENDIF}] then
          Dispose(ar[i].VExtended);
      Finalize(ar);
    end;
    
    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}
            if i > MaxInt then
              Result := i
            else
              Result := Integer(i)
    {$ELSE}
            Result := Integer(i)
    {$ENDIF}
          else
          begin
            if DecimalSeparator <> '.' then
            begin
              iPos := Pos('.', s);
              if iPos > 0 then
                s[iPos] := DecimalSeparator;
            end;
            Result := StrToFloat(s);
          end;
        end;
    end;
    
  • отредактировано 09:12
    Большое спасибо!
    А как насчет добавить в FS и FR нечто вроде:
    const
      FSVer = 1.8;
    . . .
      FRVer = 3.10;
    
    И соответственно менять в релизах?

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

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