Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 639
от 16.01.2007, 10:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 440, Экспертов: 52
В номере:Вопросов: 6, Ответов: 12


Вопрос № 70315: Здравствуйте, уважаемые эксперты. Философский вопрос, а что значит буква "L" в LPVOID, LPCSTR и прочих? Ведь можно и PVOID создавать и вроде нет разницы. В чем смысл этой "L"? =)...
Вопрос № 70331: Здравствуйте! Подскажите пожалуйста win32 аналог gcc. Или какой-нибудь другой мощный c, не visual. Нужно для отладки cgi под denwer, и написания локальных приложени, с возможностью принимать и отправлять почту, скач...
Вопрос № 70346: Пожалуйста помогите. Щас петеучиваюсь с C++ Builder на Visual C++.Столкнулся с огромной проблемой компилятор не хочет понимать код при програмировании проэкта с исползованием Forms Win32. Есть структура: struct Dot { int Coordinates[...
Вопрос № 70377: Здравствуйте Уважаемые эксперты! С прошедшими праздниками! ...и задачка Даны вещественные массивы A[15], F[15]. Для каждого массива опpеделить наибольшее из отpицательных значений....
Вопрос № 70404: У меня вопрос, касающийся C++ и библиотеки Qt. У меня есть простой Widget, на котором я рисую графику (неважно какую). Раньше я делал просто: в одном классе Widget совмещал код рисования и код обработки (т.е. совмещал вид и контроллер). ...
Вопрос № 70433: Здравствуйте, Уважаемые эксперты! Помогите пожалуйста решить вот такую задачку на С++: Вычислить значение логического выражения. T - true, F - false. Например: %(&(T,F),T) равно T. % - OR, & - AND. В стек заносятся значения TF и действия....

Вопрос № 70.315
Здравствуйте, уважаемые эксперты.
Философский вопрос, а что значит буква "L" в LPVOID, LPCSTR и прочих? Ведь можно и PVOID создавать и вроде нет разницы. В чем смысл этой "L"? =)
Отправлен: 10.01.2007, 17:29
Вопрос задал: Palpatin (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Madproger
Здравствуйте, Palpatin!

L - long

Исторически сложилось. Когда были 16-битные машинки это означало
LPVOID = 32 bit
а
PVOID = 16 bit

На данный момент вроде нет разницы

LPVOID = PVOID = void*
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 10-ый класс)
Ответ отправлен: 10.01.2007, 17:39

Отвечает: Tek
Здравствуйте, Palpatin!
Это историческое наследие:
На 16-битных системах были такие понятия как ближний указатель и дальний (far или long)
Дальний состоял из двух 16-битных значений - адрес и смещение в блоке,
а ближний - просто смещение, которое определяло положение области памяти в адресном пространстве программы (тогда программы без дополнительных телодвижений использовали адресное пространство памяти размером 2^16 байт (65535), для использования большей памяти требовались менеджеры памяти, которые умели адресовать ее блоками по 65к)
Теперь все указатели 32-битные и в таком делении отпала необходимость, но обозначения остались(можно сказать для совместимости)
---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 6-ой класс)
Ответ отправлен: 10.01.2007, 17:50

Отвечает: Шинтяков Дмитрий Васильевич / Ratson
L означает Long, и досталась в наследие от 16-битных операционных систем, где были разные модели памяти, ограничение на объём одного объекта в 64Кб и прочие ужасы. Указатель разделялись на near и far (т.е. long).

Сейчас (в 32-битных системах) все указатели Long, так что разницы действительно нет.
Ответ отправил: Шинтяков Дмитрий Васильевич / Ratson (статус: 2-ой класс)
Ответ отправлен: 10.01.2007, 19:19


Вопрос № 70.331
Здравствуйте!

Подскажите пожалуйста win32 аналог gcc.

Или какой-нибудь другой мощный c, не visual.

Нужно для отладки cgi под denwer, и написания локальных приложени, с возможностью
принимать и отправлять почту,
скачивать и загружать файлы на web server.

Раньше писал на старом turbo c, но это было давно и не правда.

Сейчас хочу найти компилятор который будет работать с моими сорцами без заморочек.
Отправлен: 10.01.2007, 19:01
Вопрос задал: Талипов А Н (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Хватов Сергей
Здравствуйте, Талипов А Н!

Есть порт gcc под windows в составе проекта cygwin:
http://www.cygwin.com/
Ответ отправил: Хватов Сергей (статус: Студент)
Ответ отправлен: 10.01.2007, 19:30

Отвечает: Torsten
Здравствуйте, Талипов А Н!
mingw - аналог gcc под windows.
http://www.mingw.org/download.shtml
Основные пакеты, которые нужны для работы:
gcc-core
gcc-g++
mingw-runtime
binutils
Если еще понадобится для windows нужен
w32api
И утилита make тоже отдельно идет
mingw32-make
---------
#define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 4-ый класс)
Ответ отправлен: 11.01.2007, 08:36


Вопрос № 70.346
Пожалуйста помогите. Щас петеучиваюсь с C++ Builder на Visual C++.Столкнулся с огромной проблемой компилятор не хочет понимать код при програмировании проэкта с исползованием Forms Win32.
Есть структура:
struct Dot
{
int Coordinates[3];
string Name;
vector<int>Lines;
}Template;
//И есть обьект:
vector<Dot>Dots;
Dots.push_back(Template)
/*Происходит глюк с инициацией переменных в Dots.Они не инициируются, хотя при создании консольного приложения с использованием этой структуры все работает нормально.
А почему нельзя в визуал с++ сделать Dots.push_back(), в билдере можно.
Как создать глобальную переменную внутри функции? */
Dots[0].Name = "sfdg";
Dots[0].Coordnates[0] = 0;
Отправлен: 10.01.2007, 20:33
Вопрос задал: Michael Stumbra (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Melamed
Здравствуйте, Michael Stumbra!
Метод push_back в MSVC++ имеет параметр, ссылку на элемент вектора. Если элемент вектора класс, то он должен перекрывать оператор присваевания элемента этого же класса. В вашем слу чае код следует писать следущим образом (см приложение)

Приложение:

Ответ отправил: Melamed (статус: 9-ый класс)
Ответ отправлен: 10.01.2007, 21:04

Отвечает: kool
Здравствуйте, Michael Stumbra!
Все о чем ты написал - у меня на VC работает см. приложение.
А глобальная переменная не может быть "создана" внутри функции.
Ее обычно объявляют вне всех функций - в заголовочном файле.
Удачи!

Приложение:

Ответ отправил: kool (статус: 3-ий класс)
Ответ отправлен: 12.01.2007, 20:44


Вопрос № 70.377
Здравствуйте Уважаемые эксперты!
С прошедшими праздниками!
...и задачка
Даны вещественные массивы A[15], F[15]. Для каждого массива опpеделить наибольшее из отpицательных значений.
Отправлен: 10.01.2007, 22:46
Вопрос задала: Lena_25 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PROD
Здравствуйте, Lena_25!
double amax=0,fmax=0;
for(int i=0;i<15;i++){
if((a[i]<0)&&(a[i]>amax)||(amax=0)){amax=a[i];}
if((f[i]<0)&&(f[i]>fmax)||(fmax=0)){fmax=f[i];}
}
собственно и все
Ответ отправил: PROD (статус: 6-ой класс)
Ответ отправлен: 10.01.2007, 23:26

Отвечает: Терсков Сергей
Здравствуйте, Lena_25!
Смотрите код в приложении...

Приложение:

Ответ отправил: Терсков Сергей (статус: 4-ый класс)
Ответ отправлен: 11.01.2007, 03:37


Вопрос № 70.404
У меня вопрос, касающийся C++ и библиотеки Qt.
У меня есть простой Widget, на котором я рисую графику (неважно какую).

Раньше я делал просто: в одном классе Widget совмещал код рисования и код обработки (т.е. совмещал вид и контроллер). Делал примерно так: создаю нулевой таймер (когда очередь сообщений пуста) и на этот таймер вешаю код обработки графики. Пример в приложении 1.

Теперь я хочу разъединить эти вещи. Первое, что приходит на ум, да и советуют многие – это потоки. Поток подготавливает кадр, а окно показывает. Это правильно, или я в чём-то ошибаюсь? Ситуация осложняется тем, что у меня нет прямого доступа к функции перерисовки окна (paintEvent). И надо помнить о синхронизации. Примерный код в приложении 2.

Теперь суть вопроса. Код из прил.2 работает некорректно. Плохо со синхронизацией, окно плохо «слушается», и вообще просто плохо :)
Может кто-нибудь подскажет идею или, хотя бы, направление, в котором стоит двигаться?

Приложение:

Отправлен: 11.01.2007, 01:14
Вопрос задал: V1s0r (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ramok
Здравствуйте, V1s0r!
ваш случай
http://cartan.cas.suffolk.edu/qtdocs/threads-mandelbrot.html

The application consists of two classes:
* RenderThread is a QThread subclass that renders the Mandelbrot set.
* MandelbrotWidget is a QWidget subclass that shows the Mandelbrot set on screen and lets the user zoom and scroll.
Ответ отправил: ramok (статус: 7-ой класс)
Ответ отправлен: 11.01.2007, 23:41
Оценка за ответ: 5
Комментарий оценки:
ramok, огромное спасибо. Теперь буду внимательней смотреть документацию по Qt :)


Вопрос № 70.433
Здравствуйте, Уважаемые эксперты! Помогите пожалуйста решить вот такую задачку на С++:
Вычислить значение логического выражения. T - true, F - false. Например: %(&(T,F),T) равно T. % - OR, & - AND. В стек заносятся значения TF и действия.
Отправлен: 11.01.2007, 09:49
Вопрос задала: Чагина Наталья (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tek
Здравствуйте, Чагина Наталья!
Задача сводится к простому разбору строки посимвольно даже, согласно простым правилам:
1. если встретился знак операции (% или &) - заносим в стек после него должна идти отркывающая скобка - если что то другое - ошибка
2. T и F - тоже в стек - после них запятая или закрывающая скобка - иначе ошибка
3. Когда встречаем закрывающую скобку - извлекаем из стека последние три элемента - это должны быть два агрумента в конце и первым - знак операции - иное - ошибка. Вычисляется конкретная операция, удаляются эти три элемента из стека и вместо них пишется результат.

Стек можно организовать как желаете - массивом, вектором, строкой и т. д.

---------
WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 6-ой класс)
Ответ отправлен: 11.01.2007, 09:59

Отвечает: Терсков Сергей
Здравствуйте, Чагина Наталья!
Попробуйте вот такой вариант. Класс стека взят из STL.

Приложение:

Ответ отправил: Терсков Сергей (статус: 4-ый класс)
Ответ отправлен: 12.01.2007, 06:23


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.40 от 14.01.2007
Яндекс Rambler's Top100

В избранное