Вопрос № 75205: Здравствуйте эксперты!При компиляции программы появляются ошибки:
[C++ Error] Unit1.cpp(27): E2108 Improper use of typedef 'Func'
[C++ Error] Unit1.cpp(28): E2108 Improper use of typedef 'Func'
[C++ Error] Unit1.cpp(29): E2108 Improper...Вопрос № 75257: Моя программа запущенная на двох компютерах. Как сделать так, чтобы при написании текста в Мемо1 текст писался в Мемо1 на другом компютере?...Вопрос № 75286: Добрый день.
Обьясните пожалуйста почему в этой программе изменяются битовые поля, и почему цикл do while выполняется именно 255 раз, и почему переменная ptr имеет тип именно char...Вопрос № 75305: Подскаж ите какие-нибудь книги для программирования типа клиент-сервер....Вопрос № 75314: Уважаемые Эксперты,
Подскажите, плз, как используя класс CPropertySheet закладки расположить "снизу".
Спасибо....
Вопрос № 75.205
Здравствуйте эксперты!При компиляции программы появляются ошибки:
[C++ Error] Unit1.cpp(27): E2108 Improper use of typedef 'Func'
[C++ Error] Unit1.cpp(28): E2108 Improper use of typedef 'Func'
[C++ Error] Unit1.cpp(29): E2108 Improper use of typedef 'Func'
подскажите где ошибка?
Приложение:
Отправлен: 11.02.2007, 13:59
Вопрос задал: Hunter20 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Базанов Иван Александрович
Здравствуйте, Hunter20!
class Func
{
}; - это объявление нового типа данных, фактически. Для того чтобы обращаться к полям и методам, нужно создать экземпляр этого класса - переменную.
Func myFunc;
Тогда обращения myFunc.Size и myFunc.Increase имеют смысл.
Кстати - у тебя перед глазами пример: класс TForm1 и переменная Form1 указатель на объект типа TForm1
--------- Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Ответ отправил: Базанов Иван Александрович (статус: 4-ый класс)
Ответ отправлен: 11.02.2007, 14:22 Оценка за ответ: 5 Комментарий оценки: Спасибо ,я уже и сам догадался
Отвечает: kool
Здравствуйте, Hunter20!
Вот это
Func.Size=0;
Func.Increase(3);
не правильно.
Func - это тип. А чтобы такое
написать нужно чтобы Func было
объектом этого типа (класса).
Правильно будет так (см.прил.)
Удачи!
Приложение:
--------- I am.
Ответ отправил: kool (статус: 7-ой класс)
Ответ отправлен: 12.02.2007, 12:48
Вопрос № 75.257
Моя программа запущенная на двох компютерах. Как сделать так, чтобы при написании текста в Мемо1 текст писался в Мемо1 на другом компютере?
Отвечает: Lemeshev Konstantin
Здравствуйте, Костенко Игорь Викторович!
Будем считать, что компы с программой имеют подключение друг к другу по сети, иначе поставленная задача не выполнима. Так что нужно использовать сокеты, для связи между программами.
Почитать и посмотреть примеры можно по следующим ссылкам:
http://www.realcoding.net/article/view/1950 (для C++Builder)
http://www.gamedev.ru/articles/?id=80101
Ответ отправил: Lemeshev Konstantin (статус: 4-ый класс)
Ответ отправлен: 12.02.2007, 06:18 Оценка за ответ: 5 Комментарий оценки: Спасибо. Вполне исчерпывающий ответ.
Отвечает: kool
Здравствуйте, Костенко Игорь Викторович!
Почитай про сокеты, именованные каналы, почтовые слоты,
вызов удаленных процедур, DCOM и т.д.
Удачи!
--------- I am.
Ответ отправил: kool (статус: 7-ой класс)
Ответ отправлен: 12.02.2007, 12:48 Оценка за ответ: 4 Комментарий оценки: Спасибо. Еще би ссылочку:-).
Вопрос № 75.286
Добрый день.
Обьясните пожалуйста почему в этой программе изменяются битовые поля, и почему цикл do while выполняется именно 255 раз, и почему переменная ptr имеет тип именно char
Приложение:
Отправлен: 11.02.2007, 23:27
Вопрос задал: Platon (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergijj
Здравствуйте, Platon!
Отвечаю по порядку:
1. Битовые поля изменяются потому, что они оформлены всесте с ptr как union. Union - это такая структура, где все поля находятся в одной и той же области памяти. Т.е. у Вас зарезервирована область памяти, размером в 1 байт (unsigned char), к которой можно обращаться либо как к байту (unsigned char), либо как к структуре с битовыми полями (у которой размер тоже равен 1 байту (4 битовых поля по 2 бита = 8 бит = 1 байт)). Причём, как бы Вы не обращались сюда, Вы обращаетесь к одной и той же ячейке памяти. Следовательно,
меняя в цикле значение op.ptr (декрементируя его), Вы одновременно меняете и значение битовых полей (так как адрес-то памяти тот же).
2. Цикл выполняется именно 255 потому что Вы так "заказали". Т.е. в начале Вы проинициализировали op.ptr значением 255, а потом, раз в цикл, Вы его декрементируете (вычитаете единицу). Оператор
op.ptr--;
как раз и обозначает следующее: "использовать значение op.ptr, а затем, декрементировать его" (если бы оператор был такой:
--op.ptr;
то это бы обозначало: "сначала декрементировать op.ptr, а затем использовать полученное значение op.ptr").
В свою очередь морфологическая конструкция
do {
} while (op.ptr--);
дословно обозначает следующее: "Делать (do) до тех пор, пока (while) в ячейке памяти op.ptr есть значение, отличное от нуля. После чтения значения из ячейки памяти op.ptr, значение op.ptr декрементировать."
Следовательно у Вас:
1. Инициализируется op.ptr значением 255;
2. В цикле проверяется значение op.ptr на "НЕ НУЛЬ";
3. Если не нуль, то декремент;
4. Если нуль, выход из цикла.
3. На Ваш третий вопрос ответить можно только расплывчато: "Потому, что Вы так захотели (посчитали нужным)". В принципе, можно было использовать почти что угодно другое. В данном случае вижу причину использования unsigned char в том, что цикл нужно выполнять именно 255 раз. Тип unsigned char = 1 байту = 8 бит и может принимать значения от 0 до 255 (т.е. всего 256 значений = 2 в 8-й степени (по количеству бит в типе)). Поэтому не имело смысла брать тип, например, 2 байта (unsigned short int = 2 байта
= 16 бит, 0..65535), ибо всё равно больше 255 и меньше 0 значение переменной никогда не будет.
Успехов!
P.S.: Если что не понятно - спрашивайте.
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 8-ой класс)
Ответ отправлен: 12.02.2007, 10:08
Отвечает: kool
Здравствуйте, Platon!
Цикл выполняется 256 раз (посчитай еще когда op.ptr==0).
256 - это число возможных значений переменной типа char, которая
состоит из 8 бит (2^8=256).
Битовые поля изменяются, потомучто они входят в объединение с
переменной unsigned char ptr. Всего битовые поля занимают 8 БИТ.
Вот наверное и усе.
Удачи!
--------- I am.
Ответ отправил: kool (статус: 7-ой класс)
Ответ отправлен: 12.02.2007, 12:49
Отвечает: Thread
Здравствуйте, Platon!
Вас, по видимому сбило название типа - char. Возможно вы подумали, что char - это символ. На самом деле char - это целый тип, значения котрого лежат в диапазоне 0..255, аналог паскалевского типа byte.
Ответ отправил: Thread (статус: 4-ый класс)
Ответ отправлен: 12.02.2007, 15:18
Вопрос № 75.305
Подскаж ите какие-нибудь книги для программирования типа клиент-сервер.
Отвечает: Андрей / Magistr
Здравствуйте, Костенко Игорь Викторович!
Для поиска книг используйте поиск.
О проектировании данных для клиент-серверных приложений С++Builder. (http://www.citforum.ru/programming/application/builder_ap0.shtml)
Платформа для создания серверов приложений на C++ (http://gazette.linux.ru.net/lg79/tougher.html)
Успехов в программировании!
Ответ отправил: Андрей / Magistr (статус: 5-ый класс)
Ответ отправлен: 12.02.2007, 22:21
Вопрос № 75.314
Уважаемые Эксперты,
Подскажите, плз, как используя класс CPropertySheet закладки расположить "снизу".
Спасибо.
Отправлен: 12.02.2007, 07:01
Вопрос задал: PostM (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tek
Здравствуйте, PostM!
Да никак. Класс CPropertySheet отвечает за логику панели свойств, а не за ее отображение в виде панели закладок
У вас следующие варианты:
1. На этапе проектирования в редакторе ресурсов вscnfdbnm нужное положение закладок с помощью галочек Vertical и Bottom
2. Во время работы - получить дескриптор окна панели закладок (этот метод унаследован от CWnd). А затем функцией SetWindowLong() установить по этому дескриптору стили окна TCS_BOTTOM и TCS_VERTICAL в соответсвующей комбинации.
3. Я не знаю как но связать класс CPropertySheet с классом CTabCtrl. А вот как раз у этого класса есть функционал управления собственно отображением панели закладок.
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 9-ый класс)
Ответ отправлен: 13.02.2007, 17:59