Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись в Memo, Запись в Memo устройств найденых с помощ 
:(
    Опции темы
Cheshuya
Дата 13.7.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вопроос: Как записать в Memo все устройства которые будут найдены?

вот кусок кода который ищет устройства на компе.
Код

BOOL bRet = FALSE;
// Retrieve device list for GUID that has been specified.
HDEVINFO hDevInfoList = SetupDiGetClassDevs (&m_GUID, NULL, NULL, (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));

if (hDevInfoList != NULL)
{
 SP_DEVICE_INTERFACE_DATA deviceInfoData;

 for (int MemberIndex = 0; MemberIndex < 127; MemberIndex++)
 {
  // Clear data structure
  ZeroMemory(&deviceInfoData, sizeof(deviceInfoData));
  deviceInfoData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
 }
}
Спасибо.
PM MAIL   Вверх
maddoc
Дата 13.7.2005, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Memo->Lines->Add(название устройства из структуры)

Это сообщение отредактировал(а) maddoc - 13.7.2005, 12:33


--------------------
"Безвыходных положений не бывает" (с) Камасутра
PM MAIL   Вверх
codelord
Дата 14.7.2005, 03:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



#include <setupapi.h>
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 SP_DEVINFO_DATA DeviceInfoData;
       DWORD i;
       Memo1->Clear();

       // Create a HDEVINFO with all present devices.
       HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL,
           0, // Enumerator
           0,
           DIGCF_PRESENT | DIGCF_ALLCLASSES );
       
       if (hDevInfo == INVALID_HANDLE_VALUE)
       {
           // Insert error handling here.
           return;
       }
       
       // Enumerate through all devices in Set.
       
       DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
       for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,
           &DeviceInfoData);i++)
       {
           DWORD DataT;
           LPTSTR buffer = NULL;
           DWORD buffersize = 0;
           
           // 
           // Call function with null to begin with, 
           // then use the returned buffer size 
           // to Alloc the buffer. Keep calling until
           // success or an unknown failure.
           // 
           while (!SetupDiGetDeviceRegistryProperty(
               hDevInfo,
               &DeviceInfoData,
               SPDRP_DEVICEDESC,
               &DataT,
               (PBYTE)buffer,
               buffersize,
               &buffersize))
           {
               if (GetLastError() == 
                   ERROR_INSUFFICIENT_BUFFER)
               {
                   // Change the buffer size.
                   if (buffer) LocalFree(buffer);
                   buffer = (char*)LocalAlloc(LPTR,buffersize);
               }
               else
               {
                   // Insert error handling here.
                   break;
               }
           }
           
           Memo1->Lines->Add(buffer);
           
           if (buffer) LocalFree(buffer);
       }
       
       
       if ( GetLastError()!=NO_ERROR &&
            GetLastError()!=ERROR_NO_MORE_ITEMS )
       {
           // Insert error handling here.
       }
       
       //  Cleanup
       SetupDiDestroyDeviceInfoList(hDevInfo);
}



--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Cheshuya
Дата 15.7.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как из буфера файла вытащить значения в Memo?
Код

if(!ReadFile(hRead, io_buffer, BBytesReadRequest, &ulBytesSucceed, NULL)) ShowMessage(SysErrorMessage(GetLastError()));



PM MAIL   Вверх
codelord
Дата 15.7.2005, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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





Цитата(codelord @ 14.7.2005, 03:07)
  Memo1->Lines->Add(buffer);




--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Cheshuya
Дата 19.7.2005, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Как вывести массив
BYTE rd_buffer[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

в Memo

чтобы он распологался в строку
а не в столбец?
PM MAIL   Вверх
codelord
Дата 19.7.2005, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



ну преобразуй его к char,
и добавь
Код

char rd_buffer[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
Memo1->Lines->Add(rd_buffer);

только строку из 0, ты не увидишь.


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
Cheshuya
Дата 20.7.2005, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть массив
BYTE rd_buffer[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

Его нужно форматированно вывести в Memo
Делаю так:

AnsiString s;
TVarRec Args=&rd_buffer;
s = Format("%s",Args,3);
Memo->Lines->Add( s );

Выдает Error
[C++ Error] unTest1.cpp(200): E2034 Cannot convert 'TVarRec' to 'const TVarRec *'
[C++ Error] unTest1.cpp(200): E2342 Type mismatch in parameter 'Args' (wanted 'const TVarRec *', got 'TVarRec')

Что неправильно?
PM MAIL   Вверх
_hunter
Дата 20.7.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



и что? так сложно написать &Args?


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


Шустрый
*


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

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



Цитата
и что? так сложно написать &Args?

s = Format("%s",&Args,3); поставил и получил EConvertError.

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


Эксперт
****


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

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



тоже понятно -- ты ему адрес адреса даеш. а что там -- никто не знает. вот и валится


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 777
Регистрация: 7.5.2005
Где: ты моя темноглаза я где?!

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



Все твои беды от BYTE,
опять таки зачем тебе он нужен если ты собираешься выводить в Memo???.

предлагаю вот такой вариант, закидывание в char:

Код

BYTE rd_buffer[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
char *rd_buffer2 = new char[sizeof(rd_buffer)];
strcpy(rd_buffer2,rd_buffer);

AnsiString s;
TVarRec Args[1];
Args[0]=rd_buffer2;
s = Format("%s",Args,3);
Memo1->Lines->Add(s);


Какого эффекта ты пытаешься добиться??. Может лучше сказать?? и вместе подумаем. smile


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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