Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция Format, класса AnsiString 
:(
    Опции темы
Лена
Дата 18.9.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Есть фрагмент кода из VC++:
strDesc.Format(_T("[Unknown type = %d]"), vt); 
где vt имеет тип VARTYPE, а strDesc CString. 
Хочу получить этот код на Builder.
У меня strDesc тип AnsiString, а vt у меня имеет тип unsigned short.
Как оформить вызов Format в моем случае c привидением типов?
Без привидения типа не правильно:
strDesc.Format(_T("[Unknown type = %d]"), vt);

P.S.
Что такое “_T”?

PM MAIL   Вверх
_hunter
Дата 18.9.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



примерно так:
strDesc.sprintf("[Unknown type = %d]", vt);


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Лена
Дата 18.9.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Cпасибо, это работает.
Однако все же без ф-ции Format я похоже не могу обойтись. Есть еще фрагмент кода на VC:
Код

// Для каждого параметра метода...
      for (k = 0; k < (UINT) pFuncInfo->cParams; k++)
      {
        // ...получаем информацию о параметре
        strNode.Format(_T("\t\tParameter %d type: %d"), k + 1, pFuncInfo->lprgelemdescParam[k].tdesc.vt);
        // ...выводим информацию о параметре
        cout << strNode << endl;
      }


Я пытаюсь сформировать в Builder так:
Код

                                        AnsiString Par[255];
                                        AnsiString AllParam;
                                        for(int k = 0; k <pSTRUCT->cParams; k++)
                                               {
                                              Par[k].Format(_T("\t\tParameter %d type: %d"),k + 1,pSTRUCT->lprgelemdescParam[k].tdesc.vt); //ошибка!
                                              AllParam = AllParam + Par[k];
                                               }

[C++ Error] UActiveX.cpp(300): E2034 Cannot convert 'int' to 'const TVarRec *'
[C++ Error] UActiveX.cpp(300): E2342 Type mismatch in parameter 'args' (wanted 'const TVarRec *', got 'int')
Как правильно привести типы в этом случае?
Спасибо.
PM MAIL   Вверх
_hunter
Дата 18.9.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



разве у AnsiString' а есть метод Format?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Лена
Дата 18.9.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(_hunter @ 18.9.2006,  16:17)
разве у AnsiString' а есть метод Format?

Да.
static AnsiString __fastcall Format(const AnsiString& format, const TVarRec *args, int size);
PM MAIL   Вверх
Vyacheslav
Дата 18.9.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Код

Par[k] = AnsiString::Format("\t\tParameter %d type: %d",ARRAYOFCONST(k + 1,pSTRUCT->lprgelemdescParam[k].tdesc.vt));

 


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Лена
Дата 18.9.2006, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Цитата(Vyacheslav @ 18.9.2006,  16:38)
Код

Par[k] = AnsiString::Format("\t\tParameter %d type: %d",ARRAYOFCONST(k + 1,pSTRUCT->lprgelemdescParam[k].tdesc.vt));

Появилась другая ошибка:
[C++ Error] UActiveX.cpp(301): E2219 Wrong number of arguments in call of macro 'ARRAYOFCONST'
PM MAIL   Вверх
Vyacheslav
Дата 18.9.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Извиняюсь: нужны двойные скобки ARRAYOFCONST((...))
Код

AnsiString::Format("\t\tParameter %d type: %d",ARRAYOFCONST((k + 1,pSTRUCT->lprgelemdescParam[k].tdesc.vt)));






--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Лена
Дата 18.9.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Cпасибо большое!  smile 
Работает!
PM MAIL   Вверх
Yra
Дата 19.9.2006, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.9.2006
Где: Украина, Киев

Репутация: нет
Всего: нет



Лена, Незачто!!! Если б я знал ответ на твой вопрос - я тоже б подсказал!!!  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.