Вопрос № 43210: Доброго времени суток!!!
у меня есть небольшой вопросик по классам...
есть класс А, у него есть свой конструктор, и есть класс В с долбавленными полями, в связи с чем мне нужен для этого класса свой конструктор, который перекрывает ...Вопрос № 43213: Уважаемые эксперты, у меня снова к вам идиотский вопрос!
никогда не писал гуи, поэтому наверное то что я спрошу и вслух то стыдно произносить, но всё таки нужно это узнать... В общем вынужден работать в Visual Studio 6.0 и создать приложение, кот...Вопрос № 43237: Здравствуйте эксперты
Посоветуйте пожалуйста,
1. как в Си++Билдера получить "зашитый" серийник винчестера?
2. как организовать исполнение динамически генерируемого бинарного кода из сегмента данных?
..Вопрос № 43291: Призадумался вот над такой задачей: Можно ли проимитировать выключение ПК, НО! не выключая его. То есть чтобы пользователь думал что он выключил ПК ( Пуск - Завершение работы), а ПК на самом деле остался включенным и по отправленному ПК пакету, он пр...Вопрос № 43309: Уважаемые эксперты я никогда не работал с файлами в С++, а тут появиласи такая задача:
Дан файл f, компоненты которого являются действительными числа-
ми. Hайти сумму квадратов компонент файла f.
Пожалуста дайте ответ с коментар...Вопрос № 43310: Здравствуйте!
Псомотрите тчо не так в задаче:
тут структура (БД сотрудников) когда я ее ввожу все нормально, но когда она выводится на экран то почти все нормально, т.е. перед выводо зарплаты последнего сотрудника не стаится разделитель Tab(...Вопрос № 43321: Здраствуйте, имеется цледующая проблема
при возврате из функции deQueue() теряется имя у Client
на сколько мне известно это происходит когда конструктор не переписывает имя, подскажите пожалуста в чем моя ошибка...
Вопрос № 43.210
Доброго времени суток!!!
у меня есть небольшой вопросик по классам...
есть класс А, у него есть свой конструктор, и есть класс В с долбавленными полями, в связи с чем мне нужен для этого класса свой конструктор, который перекрывает конструктор базового класса...
подскажите как это реализуется, а то что-то не получатся у меня...
ответы лучше в примерах... ))
З.Ы. Заранее спасибо!!!!!
Единственную проблему здесь вижу это запустить конструктор базового класса с параметром...
В приложении конструктор CDlgDlg
CDlgDlg - наследник CDialog
Приложение:
--------- Успех неизбежен
Ответ отправил: Zitz (статус: 10-ый класс)
Ответ отправлен: 16.05.2006, 13:00
Отвечает: RedDevil
Здравствуйте, Баркин Алексей!
Вначале значит по любому получается, что класс B наследует класс, хотя вы этого не указали, по другому никак. В любом случае вам нужно, чтобы класс B не вызывал констркутор класса A. В С++ это делается по умолчанию. То есть просто так отменить вызов конструктора нельзя. Но можно пойти другим путем. Создать в классе A пустой конструктор, с какими-нибудь параметрами, которые в вашем классе не используются вообще.
Вся идея основывается на том, чтобы вызывать "пустой" конструктор базового класса. По умолчанию всегда вызывается конструктор без параметров.
Приложение:
--------- Есть 10 типов людей: те, кто знаком с двоичной системой, и те, кто нет.
Ответ отправил: RedDevil (статус: Студент)
Ответ отправлен: 17.05.2006, 08:33
Вопрос № 43.213
Уважаемые эксперты, у меня снова к вам идиотский вопрос!
никогда не писал гуи, поэтому наверное то что я спрошу и вслух то стыдно произносить, но всё таки нужно это узнать... В общем вынужден работать в Visual Studio 6.0 и создать приложение, которое бы получало от пользователя какой лиюо текст, и после этого делала с ним определённые действия... В общем для этого я создаю новый проект, и выбираю диалоговое приложение... дальше перетягиваю на основное окно Edit Control. Как считывать из edit в переменную данные набранные польбзователем? ещё раз сорри за тупизм...
Отвечает: Santana
Здравствуйте, Nikolay M Petrov!
Любой Edit имеет свойство text. Edit->Text как раз то что тебе надо. Читай ООП
:)
Ответ отправил: Santana (статус: 2-ой класс)
Ответ отправлен: 16.05.2006, 13:05 Оценка за ответ: 5
Отвечает: Zitz
Здравствуйте, Nikolay M Petrov!
1.
Самое простое это привязать к эдиту переменную:
View->Class wizard->Member variablel->add variable, привязываем например CString.
А потом уже работает непосредственно с ним.
Перед работой переменной нужно вызвать:
UpdateData(TRUE);
если изменили ее, то UpdateData(FALSE);
// если не путаю...
2.
Вызвать
GetDlgItem(ИДЕНТИФИКАТОРЭДИТА)
он вернет указатель на его окно, т.е. CWnd *
Из которого уже можно вытащить GetWindowText(Указатель в CString)
И попутно много полезных весчей... ;)
3. (упрощенный пункт № 2)
Вызвать GetDlgItemText(ИДЕНТИФИКАТОРЭДИТА, уазатель в CString)
--------- Успех неизбежен
Ответ отправил: Zitz (статус: 10-ый класс)
Ответ отправлен: 16.05.2006, 13:14 Оценка за ответ: 5
Вопрос № 43.237
Здравствуйте эксперты
Посоветуйте пожалуйста,
1. как в Си++Билдера получить "зашитый" серийник винчестера?
2. как организовать исполнение динамически генерируемого бинарного кода из сегмента данных?
2. Задайте этот вопрос в рассылку по ассемблеру ...
Успехов!
Ответ отправил: Лучников Ю.В. (статус: *Мастер-Эксперт) Россия, Киров WWW:нЧат - Наш Чат! ICQ: 176308580 ---- Ответ отправлен: 17.05.2006, 04:43 Оценка за ответ: 3 Комментарий оценки: Меня интересует не серийник тома (раздела), а сам физический серийник, "зашитый" в плате винчестера. Дело в том, что серийник тома (раздела) меняется при форматировании, а серийник винчестера один на всю его жизнь.
Вопрос № 43.291
Призадумался вот над такой задачей: Можно ли проимитировать выключение ПК, НО! не выключая его. То есть чтобы пользователь думал что он выключил ПК ( Пуск - Завершение работы), а ПК на самом деле остался включенным и по отправленному ПК пакету, он проснулся.
Отправлен: 17.05.2006, 06:55
Вопрос задал: SUPcOZA (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sergijj
Здравствуйте, SUPcOZA!
Можно. Но для этого нужно:
1. Физический доступ к компу при первоначальной настройке (подправить в BIOS настройки (уходить в полный слип (с отключением HDD, монитора, всех вентиляторов), просыпаться от сети (модема, либо с др. устройств, использующих IRQ)), - да и то, если BIOS поддерживает это);
2. Писать много низкоуровневого кода типа: перехватывать соответствующие прерывания, делать свою обработку их, проверять каскад перехвата на переперехват, и т.д.; а если уж совсем честно хочется - лезть в BIOS (копаться с его кодами и функциями (через shadow memory)).
Стандартных таких функций - нет и быть не может...;-)
Помню, народ в КЦ при ЛГДТЮ шуточки всякие с этим делал ещё на Tech'ах (i80287), типа:
лезем в BIOS, выдираем оттуда (вручную) интерфейс загрузки, перехватываем 0FF00h, а в конце выводим какую-нибудь надпись типа System Halted, а после того, как юзер наОХается - выводим сообщение типа (Intel repaired system...) и выходим из собственной программы...:)
А не отсюда ли пошла "слава" Интелей?...:-)
Правда срабатывало это только если кто-то (Ctrl+Alt+Del или какая-то прога) хотел перезагрузиться. При кнопке выключения питания это не срабатывало, ибо тогда об ATX даже в проекте не слышали...;-)
Про кнопку Power - курочить BIOS, либо в techHelp.
P.S.: Много по Shadow BIOS и по всяким Suspend и Sleep режимам и кодам - есть в XView, который я Вам присылал... Кстати, он и есть последний techHelp (во всяком случае новее я ничего не видел).
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 3-ий класс)
Ответ отправлен: 17.05.2006, 09:20
Отвечает: Santana
Здравствуйте, SUPcOZA!
Вообще-то этот процесс назвается засыпанием. программно делается также как и выключение (подробности не помню, ищи в сети). а просыпание зависит от натсроек в БИОСЕ. так что дерзай. в зависимости от модели даже от прихода письма может проснутся :)
Ответ отправил: Santana (статус: 2-ой класс)
Ответ отправлен: 17.05.2006, 09:48 Оценка за ответ: 3 Комментарий оценки: Если бы все было так просто. Факт в том нужно перехватывать ВСЕ попытки юзера выключить (зав работы, rundll32.exe powrprof.dll,SetSuspendState и так далее. То есть оформлять свой перехватчик в виде службы?
Вопрос № 43.309
Уважаемые эксперты я никогда не работал с файлами в С++, а тут появиласи такая задача:
Дан файл f, компоненты которого являются действительными числа-
ми. Hайти сумму квадратов компонент файла f.
Пожалуста дайте ответ с коментариями, да желетельно что бы программа работала под Turbo C++.
Заранее благодарен.
Отправлен: 17.05.2006, 11:14
Вопрос задал: Gh0stik (статус: 7-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Dr_Andrew
Здравствуйте, Рубан Николай Николаевич!
Насчёт Turbo C++, это вряд ли, но при использовании более современного компилятора (с поддержкой Standard C++) код ниже будет работать.
Приложение:
Ответ отправил: Dr_Andrew (статус: 1-ый класс)
Ответ отправлен: 17.05.2006, 12:16 Оценка за ответ: 4 Комментарий оценки: Спасибо за ответ, но все таки хотелось бы Turbo C++
Отвечает: Boriss
Здравствуйте, Рубан Николай Николаевич!
Вот Вам на Turbo C (проверено на Turbo C 2.0) :))
Какие комментарии Вам нужны - на минифоруме. Так как, по-моему, все очень просто
Приложение:
--------- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор) Россия, Саранск Организация: факультет Электронной техники, Мордовский госуниверситет Адрес: г. Саранск WWW:Программирование на Паскале ---- Ответ отправлен: 17.05.2006, 15:36 Оценка за ответ: 5 Комментарий оценки: Да программа работает отлично, только на сколько я понял мы используем не типизированный файл.
А как чтобы
программа работала с текстовым файлом: 1) данный введены на отдельных строках; 2) данный введены через пробел (для переменных целого типа)
Отвечает: Селиванов Александр Владимирович
Здравствуйте, Рубан Николай Николаевич!
Всё очень просто, достаточно один раз понять...
//----------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
FILE *fp; // объявляем указатель на файл
if((fp = fopen("data.txt", "r")) == NULL) // если файла нет
{
printf("
file nos found"); // выводим сообщение
return 1; // и выходим
}
float summ(0), a; // summ - накопление суммы, a - текущее число
while(!feof(fp)) // пока не конец файла
{
fscanf(fp, "%g", &a); // считываем действительное число
// в любой форме: хоть в експоненциальной (3.3e-1)
// хоть в обычной (0.33 или .33)
summ += a*a; // накапливаем сумму
}
printf("
%g", summ); // выводим сумму
fclose(fp); // закрываем файл
return 0;
}
//----------------------------------------------------------------------------------------
Здравствуйте!
Псомотрите тчо не так в задаче:
тут структура (БД сотрудников) когда я ее ввожу все нормально, но когда она выводится на экран то почти все нормально, т.е. перед выводо зарплаты последнего сотрудника не стаится разделитель Tab( )
и З/П идолжность последнего сотрудника сливаются
почему так?
Приложение:
Отправлен: 17.05.2006, 11:27
Вопрос задал: W4rmonger (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergijj
Здравствуйте, W4rmonger!
Простите, но вывод - правильный.
Неправильный как раз ввод!
Дело в том, что функция scanf() в параметрах требует _указатели_(!) на уже созданные переменные, а не _значения_ этих переменных! Загляните ещё раз в мануал.
Когда вы подставляли в scanf() такое:
int n;
scanf("%d", n);
то scanf благополучно писал введённое с клавиатуры значение туда, куда указывал bp:n, где bp - регистр, а n - смещение в этом регистре.
Поэтому в scanf() нужно подставлять именно _адреса_ соответствующих переменных, а то как же иначе scanf() узнает куда результат клать?...:)
Да, отсюда есть одно исключение - массивы. Почему так? А потому, что массив в языке C - это и есть _указатель_...:)
Соответственно к _строкам_ операцию "получить адрес" (т.е. амперсанд ("&")) применять не нужно, - они и сами '&'...;-)
Короче, подправил я Вам код (см. приложение). Сравните его со своим и перечитайте мои комментарии. Тогда разберётесь легко.
Удачи!
Приложение:
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 3-ий класс)
Ответ отправлен: 17.05.2006, 18:41
Вопрос № 43.321
Здраствуйте, имеется цледующая проблема
при возврате из функции deQueue() теряется имя у Client
на сколько мне известно это происходит когда конструктор не переписывает имя, подскажите пожалуста в чем моя ошибка
Приложение:
Отправлен: 17.05.2006, 12:40
Вопрос задал: Pumych (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: X-MAN
Здравствуйте, Pumych!
Скорее всего потому что если у вас более одного узла, неизвестно что будет возвращено:
Client ClientQueue::deQueue()
{
if(head==tail) //If there is only one Client in queue
{
Client tmp(*head);
return (tmp);
}
//А тут что возвращаем? Непонятно!
}
--------- Оптимисты начинают день с имунеле, реалисты - с кофе, а пессимисты - с водки!
Ответ отправил: X-MAN (статус: 6-ой класс)
Ответ отправлен: 17.05.2006, 22:18