Конвертация данных Str -> Int...

отредактировано 20:48 Раздел: FastReport 2.xx VCL
Пытаюсь конвертировать строковую переменную в числовую. Что только не пробовал... StrToInt, ToNumber, ToInt...ничего не работает((( Помогите, пожалуйста, решить эту задачу, я в тупике. ;)

Комментарии

  • отредактировано 20:48
    Чем помогать-то?) Как именно, и что конвертируешь? Код, плз...
  • отредактировано 20:48
    begin
    if [DMOrders.qryOrderGoods."OP_CODE"] = '1601'
    then a := [edit1.text]
    else a := 1;
    incVar:= StrToInt(a)
    end

    Задача стоит следующая: пользователь вводит в текстовое поле данные(цифры), затем их нужно преобразовать в число для дальнейших математических операций... Наприм ввел текст 23, надо получить число 23.
  • отредактировано 20:48
    и как обьявлена переменная а ? Если string то, видимо не:
    else a := 1;
    а
    else a := '1';
    и что вообще происходит, ошибка какая?)
    Кстати, для обработки пользовательского ввода хорошо обернуть StrToIntDef, VarToStrDef да и вообще это полезные ф-ции. Альтернатива - используй try блок.
  • отредактировано 20:48
    В том то и дело, что никак не ругается. Просто не выводит на экран обработанную переменную.
  • отредактировано April 2005
    А может дело в версии FR? У меня 2.46

    --
    <span style='color:red'>А почему тогда сообщение в форуме FastReport 3?</span>
  • отредактировано 20:48
    Не нужно ни какое преобразование типов. Вот такой код прекрасно работает:

    begin
    n := 5;
    s := '10';
    p := n + s;
    end

    в результате p = 15
  • отредактировано 20:48
    Если переменная не объявлена, то извольте иметь все плюсы и минусы вариантов. Всегда будьте готовы к чему-нибудь вроде 1 + 3 = 13. В принципе, не объявлять переменные - это грабли.
  • отредактировано 20:48
    Да, действительно 2 + '2' = 4... кто бы мог подумать... похоже это выход.
    Огромное спасибо!!! Очень выручили! Теперь ясно, почему разработчики не включили в описание функции вроде StrToInt.
  • отредактировано 20:48
    Хотя, возможно, какие-то средства конвертации в Int добавлены в 3.0 версии программы. По крайней мере в 2.46 заставить их работать не получилось.
  • отредактировано 20:48
    почему же не включили? RTFM:
    FastScript 1.7 Библиотека скриптов Руководство разработчика лежит:
    http://fast-report.com/pbc_download/files/fs_ru.pdf там есть описание:

    function VarToStr(v: Variant): String
    Перевод variant в строку
    function StrToInt(s: String): Integer
    Перевод строки в целое

    они обернуты с первых версий FS, а VarToStrDef и StrToIntDef оберни самостоятельно, например:
      with fsGlobalUnit do
      begin
        AddMethod('function StrToIntDef(const S: string;'+
          'const Default: Integer): Integer', CallMethod);
        AddMethod('function VarToStrDef(const V: Variant;'+
          'const ADefault: string): string', CallMethod);
        . . .
      end;
    . . .
        if MethodName = 'STRTOINTDEF' then
          Result := StrToIntDef(Params[0], Params[1])
        else
        if MethodName = 'VARTOSTRDEF' then
          Result := VarToStrDef(Params[0], Params[1])
        else
    . . .
    
    И не забывай про Null, когда имеешь дело с вариантами 8-)
  • отредактировано 20:48
    если 2.46 то он кажись на старом ядре без FastScripta ? тады ой
  • отредактировано 20:48
    Эту доку я не видел и не искал, так как имею fr_rus.doc, а там тока про FR. FastScript нужно дополнительно устанавливать к FR? Если да, то ясно почему у меня траблы с вызовом функций.
  • отредактировано April 2005
    FastScript, как отдельный компонент, идет в комплекте с FR3
  • отредактировано 20:48
    Ладно, спасибо -=Serg=- и Georgy. Похоже все теперь ясно. Всем пока.

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

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