Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите перевести строку с Delphi на C++ 
V
    Опции темы
=Женек=
Дата 26.4.2013, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Delphi:
      Dev := TJvHidDevice(DevListBox.Items.Objects[I]);

Перевожу:
      Dev = TJvHidDevice(DevListBox->Items->Objects[I]);

Ругается:
[BCC32 Error] Security.cpp(1544): E2285 Could not find a match for 'TJvHidDevice::TJvHidDevice(TObject *)'

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


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Код

Dev = (TJvHidDevice*)DevListBox->Items->Objects[I];



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
=Женек=
Дата 26.4.2013, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо. Ну и еще вопрос.
Вот переделанная строка:
Код

      N = DevListBox->Items->Add(Format("Device VID=%.4x PID=%.4x",[HidDev->Attributes.VendorID, HidDev->Attributes.ProductID]));

Пишет Expression syntax.
Где ошибка?
PM MAIL   Вверх
Alexeis
Дата 26.4.2013, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата

[HidDev->Attributes.VendorID, HidDev->Attributes.ProductID]

В С++ нельзя создавать массивы констант. Нужно отдельно определить массив вариантов и передать его.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
=Женек=
Дата 26.4.2013, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



короче в данном случае проще через sprintf...
PM MAIL   Вверх
Alexeis
Дата 26.4.2013, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



sprintf это язык С, а не С++. В С++ проще через stringstream .


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
=Женек=
Дата 27.4.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Блин... ну помогите вот эту абракадабру перевести:
На дельфи:
Код

procedure TMainForm.ShowRead(HidDev: TJvHidDevice; ReportID: Byte;
  const Data: Pointer; Size: Word);

.......................
    Str := Str + Format('%.2x ', [Cardinal(PAnsiChar(Data)[I])]);  

................


В билдере:
Код

void __fastcall TForm1::HidCtlDeviceData(TJvHidDevice *HidDev, BYTE ReportID, const Pointer Data,
          WORD Size)
{
unsigned char I;
AnsiString Str;


  for (I = 0; I<=Size-1;I++)
  {
  Memo1->Lines->Add(AnsiString(Data)[I]); // НЕ ФОРМАТИРУЮ, ПЫТАЮСЬ ХОТЬ ЧТО-ТО ПРОЧЕСТЬ...
  }


}


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


Опытный
**


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

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



Разобрался
PM MAIL   Вверх
=Женек=
Дата 28.4.2013, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не... поторопился я...
Вот эта конструкция (PAnsiChar(Data)[I]); дает мне символ с кодом, содержащимся в (Data)[I].
Кстати, почему (Data)[I], а  не (Data[I]) ?

А как мне получить непосредственно код, то есть число unsigned char ?

PM MAIL   Вверх
math64
Дата 29.4.2013, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Код

(int)(((unsigned char*)Data)[I] & 0xFF)

PM   Вверх
=Женек=
Дата 29.4.2013, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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

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

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


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

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


 




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


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

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