Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение железа компа 
:(
    Опции темы
Toohtik
Дата 4.5.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Решил написать класс, по орпделению железа, которое установлено в компе. Сейчас пишу функцию по определению логических дисков, их букв типов....
Код

LogicDrives* MyComputer::DefineLogicDrives(void)
{
    MaskOfLD = GetLogicalDrives();
    LogicDrives *temp=NULL;
    int n=1;
    TCHAR p;
    for(int i=0;i<26;i++)
    {
        if((MaskOfLD>>i)&0x00000001)
        {
            temp=(LogicDrives*) realloc (temp,n*sizeof(LogicDrives));
            temp[n].Name=TCHAR(65+i);
            n++;
        };
    }
    return temp;    
};

По идеи в переменной temp[].name должна быть буква логического диска, но вместо ней там мусор. В чем я ошибся?
PM ICQ   Вверх
JackYF
Дата 4.5.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

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



Цитата(Toohtik @  4.5.2007,  19:36 Найти цитируемый пост)
temp=(LogicDrives*) realloc (temp,n*sizeof(LogicDrives));


Может, ошибка и не здесь... но нету проверки: а вдруг realloc вернет NULL?


Цитата(Toohtik @  4.5.2007,  19:36 Найти цитируемый пост)
MaskOfLD

какого типа переменная?


А вообще, тему в раздел WinAPI надо переносить.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Partizan
Дата 4.5.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

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



а в другую сторону смещать не пробовал? =)

Код

int i,k=1;
char Let;

  for (i = 0;i <= 25; i++){
      if ( ( GetLogicalDrives() & (k << i) ) != 0){
          Let=toascii('a') + i;
      }
  }


у меня работало на ура...
getLogicalDrives мона и вынести за пределы цикла)


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Toohtik
Дата 4.5.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Та со сдвигами у меня все ок, количество дисков считает правильно, я думаю может я напорол с присвоением...
PM ICQ   Вверх
Toohtik
Дата 4.5.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Ошибка найдена
Код

    for(int i=0;i<26;i++)
    {
        if((MaskOfLD>>i)&0x00000001)
        {
            temp =(LogicDrives*) realloc (temp,n*sizeof(LogicDrives));            
            if(temp)
            {
                temp[n-1].Name=TCHAR(65+i);
                n++;
            }
        };
    }

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


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

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


 




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


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

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