Как правильно бороться с переменными

отредактировано 16:04 Раздел: FastReport 2.xx VCL
1. Почему сомпилятор BCB5 на запись
pForm1->report->Dictionary->Variables["TOTALPAGES"];
ругается
[C++ Error] TPrintAllImpl.cpp(355): E2034 Cannot convert 'char *' to 'int'
хотя в доке описано обращение к переменным таким способом

2. Как в BCB5 правильно достать (установить) переменные в отчеты с внешней формы. Скажем есть pForm2 в которой в Runtime создается pForm1, делается 2-х проходный pForm1->rep->PrepareReport() - как теперь что-либо достать из переменных (своих или стандартных) что-бы лицезреть это в pForm2 ?

Комментарии

  • отредактировано 16:04
    1. Странный у тебя какой-то сомпилятор ;) )

    P.S. В любом случае я не понимаю зачем ты что-то хочешь записать в переменную 'TOTALPAGES' ...

    2. Есть такая глобальная штука как frVariables[ИМЯ_ПЕРЕМЕННОЙ]. Вот оттудава и бери всё что тебе надо ...
  • отредактировано 16:04
    Vano написал:
    1. Странный у тебя какой-то сомпилятор ;) )

    P.S. В любом случае я не понимаю зачем ты что-то хочешь записать в переменную 'TOTALPAGES' ...

    2. Есть такая глобальная штука как frVariables[ИМЯ_ПЕРЕМЕННОЙ]. Вот оттудава и бери всё что тебе надо ...
    1. Компилятор обычный BCB5

    по поводу писать в какую-то переменную дело пока не доходит.
    Читать пока не читается.
  • отредактировано 16:04
    В BCB все сделано шиворот-навыворот, как вы им вообще можете пользоваться? ;)
    например, проперти по умолчанию там не реализованы. Поэтому обращаться к frVariables надо так:

    frVariables->Variables["la-la"] = ...
  • отредактировано 16:04
    AlexTZ написал:
    В BCB все сделано шиворот-навыворот, как вы им вообще можете пользоваться? ;)
    например, проперти по умолчанию там не реализованы. Поэтому обращаться к frVariables надо так:

    frVariables->Variables["la-la"] = ...
    При попытке обратиться к переменной

    frVariables->Variables["TOTALPAGES"]

    всв5 говорит ;)

    [C++ Error] TPrintAllImpl.cpp(355): E2316 'Variables' is not a member of 'TfrVariables'

    ;) Как все-таки в всв5 вытащить эту (или другую переменную из сформированного двухпроходного отчета) и показать ее на моей форме а не на отчете ?
  • SamuraySamuray Administrator
    отредактировано 16:04
    Правильно так:
    frVariables->Variable["la-la"]
  • отредактировано 16:04
    Samuray написал:
    Правильно так:
    frVariables->Variable["la-la"]
    ;) Оно то конечнго так правильно. Судя с доки возвращаемое значение имеет тип Variant. Каким боком это занчение переменной теперь загнать в int, AnsiString и тому подобное. Запись вида

    AnsiString time_str = frVariables->Variable["TOTALPAGES"];

    вызывает рантайм исключение и все тут. Хотя в хелпе ВСВ5 сказано что компилятор автоматически выполняет приведение типов.

    ;) Или как это все правильно делается ???
  • SamuraySamuray Administrator
    отредактировано 16:04
    kwwsoft написал:
    ;) Или как это все правильно делается ???
    Думаю что нужно так попробовать:

    AnsiString time_str;
    time_str = frVariables->Variable["TOTALPAGES"];
  • отредактировано 16:04
    Samuray написал:
    Думаю что нужно так попробовать:

    AnsiString time_str;
    time_str = frVariables->Variable["TOTALPAGES"];
    Это тоже что и немногшо выше. Результат - рантайм исключение и все..... ;)

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

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