Ответ отправлен: 07.11.2002, 10:14 Отправитель: Yuri Gordienko Отвечает Jadd
Приветствую Вас, TanaT! Да тем же GetVolumeInformation. Там параметр lpVolumeSerialNumber будет содержать серийный номер тома. Если это не устраивает, есть структура NTMS_DRIVEINFORMATION описание ты сможешь найти в MSDN, а так же функцию, использующую ее. Но это из серии Removable Devices и будет ли оно работать с винтом я не знаю. Но готов подумать. Ответ отправлен: 07.11.2002, 03:32 Отправитель: Jadd
Вопрос № 340
Здравствуйте, эксперты. Я хотел бы узнать как можно определенную строку разделить по символу ":", а потом считать конкретную последовательность байт из этой строки? И еще вопрос: как можно оправить и принять пакет по TCP/IP протоколу? Спасибо.
Приветствую Вас, BaXI! Для поиска попробуй функцию strpbrk(), а для копирования - strcpy()/strncpy()... Первая возвращает указатель на найденный символ (или NULL если нет его), а вторая копирует заданное количество байт из одной строки в другую. Вообще, если правильно все делать, то можно и просто указателями обойтись... А про TCP/IP... Хм... тебе WinSocket надо... Или, если ты хочешь работать с Internet, то WinInet.
Ответ отправлен: 08.11.2002, 00:41 Отправитель: baldr
Вопрос № 342
Здравствуйте эксперты! Помогите отыскать причину ошибку в данном коде, который представляет собой жалкий огрызок класса matrix. //--------------------------------------- #include using namespace std; #define Q_ 2 #define P_ 2 class matrix { int *pbuf; int p, q; char name; public: matrix(int x, int y) { p = x; q = y; cout << "c"; pbuf = new int [p * q]; if(!pbuf) { // } name = ''; } // matrix(int x, int y, char c) { p = x; q = y; pbuf = new int [p * q]; if(!pbuf) { // } name = c; } // ~matrix() { delete [] pbuf; cout << "d"; } // int out_p() { return p; } // int out_q() { return q; } // char out_name() { return name; } // void in_name(char c) { name =
c; } // int out_a(int j, int i) { return *(pbuf + j * i); } // void in_a(int j, int i, int a) { *(pbuf + j * i) = a; } // matrix &operator ++(); }; //-------------------------------------------- matrix &matrix::operator ++() { int i, j; for(j = 0; j < out_p(); ++j) for(i = 0; i < out_q(); ++i) in_a(j, i, out_a(j, i) + 1); return *this; } //--------------------------------------------- int main() { int i, j; matrix a(P_, Q_), b(P_, Q_); for(j = 0; j < a.out_p(); ++j) for(i = 0; i < a.out_q(); ++i) a.in_a(j, i, 1); for(j = 0; j < b.out_p(); ++j) for(i = 0; i < b.out_q(); ++i) b.in_a(j, i, 3);
Добрый день, kuper! Трудно сказать... Лучше бы ты привел весь класс целиком. Причем пиши его, пожалуйста, в поле "Приложение" - оно специально для таких вещей предназначено, а то не все символы корректно показываются в html-виде... И вот еще что - у тебя используется в цикле при проверке на границы значение из функции: j < out_p() такие вещи желательно делать только когда это действительно необходимо. Потому что из твоего текста непонятно, что это за функция, может, ее значение меняется при каждой итерации?
Ответ отправлен: 08.11.2002, 00:41 Отправитель: baldr
Вопрос № 344
Привет! В самом общем случае задача формулируется так: Защитить массив из элементов, состоящих из битов, контрольной суммой. То есть запись в массив производить через спецфункцию, в параметрах которой указывать изменяемый байт, бит... Вопрос в том, как в функцию передать бит, но не значение, а типа адрес по которому его надо менять, что ли. Пример попытки реализации см. в Приложении Уточнения по вопросу лучше задавать по мылу...
Ответ отправлен: 07.11.2002, 19:23 Отправитель: Dzik Отвечает Avl2k
Приветствую Вас, Sensey! Естественно ругается, т.к. у битовых полей адрес один и тот же. Выход один - передавать номер бита и значение, а далее манипулировать им, используя маску, тем более что в общем случае у нас не структура, а массив бит. P.S. Если можно использовать C++ и STL, то удобно использовать класс std::bitset. С уважением, Avl2k.
Приложение: Ответ отправлен: 10.11.2002, 14:35 Отправитель: Avl2k Отвечает baldr
Приветствую Вас, Sensey! Почему бы вместо контрольной суммы не хранить сам массив элементов, если он не очень большой? А при его изменении делаешь XOR старой и новой версии и получаешь единички в тех битах, где изменение было. А у тебя в примере, если хочешь изменить бит, так просто в функции передай адрес бита, а функция бит просто инвертирует... Чтоб считать значение бита - другая функция. Или я не так все понял?
Ответ отправлен: 08.11.2002, 00:40 Отправитель: baldr
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.