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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 282
от 27.12.2005, 00:57

Администратор:Калашников О.А.
В рассылке:Подписчиков: 248, Экспертов: 35
В номере:Вопросов: 5, Ответов: 11


Вопрос № 31915: Здравствуйте уважаймые эксперты. У меня следующий вопрос. Возможно ли в С++ многопоточное программирование, то есть чтобы некоторые процессы выполнялись одновременно. Например в Java есть такой класс Thread (если знаете конечно) который позволяет...
Вопрос № 31948: Здраствуйте! У меня есть xml - файл а мне надо заполнить CTreeCtrl (MFC) класс из этого файла. не знаю как это организовать Спасибо. .
Вопрос № 31952: Доброго времени суток! Решил заняться изучением программирования и начал с книги М.Уэйт, С.Прата, Д.Мартин "Язык Си" Москва "МИР" 1988 г. Ошибок в листинге программ достаточно, но удавалось исправить их самому (до вчерашнего вечер...
Вопрос № 31961: Здравствуйте эксперты. Подскажите мне как передавть информацию (в программа на c++) по сети в Linux(ядро 2.4, компилятор g++). Так-же ли это делаеться во FreeBSD? Зарание спасибо за примеры, описания, ссылки на информацию на русском языке....
Вопрос № 31972: Здравствуйте, уважаемые эксперты! Пишу на C под Юникс (FreeBSD 6.0, gcc 3.4). Подскажите, как реализовать таймар. То есть, в начале выполнения программы текущее время пишется в переменную t1, в конце программы время записывается в переменную ...

Вопрос № 31.915
Здравствуйте уважаймые эксперты. У меня следующий вопрос.
Возможно ли в С++ многопоточное программирование, то есть чтобы некоторые процессы выполнялись одновременно. Например в Java есть такой класс Thread (если знаете конечно) который позволяет такое делать. Есть ли что-то подобное в С++. Или это делается как-то через WinApi. Заранее благодарен за любую информацию.
Отправлен: 21.12.2005, 01:29
Вопрос задал: igorok (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, igorok!
Сам по себе язык не может содержать подобные конструкции. Это то, что делается средствами операционной системы. В языке С++ есть возможность использовать функции WinAPI. Есть функция CreateThread. Вот пример ее использования:

//описываем функцию потока
DWORD WINAPI ThreadFunc(LPVIOD pvParam)
{
//some code
return 0;
}

..............................................
int x = 0;
DWORD dwThreadID;

//Теперь создаем поток
HANDLE hThread = CreateThread(NULL, //по умолчанию
0, //используем инфу от компоновщика о размере стека
ThreadFunc, //наша функция потока
(PVOID) &x, //параметр этой функции - любые данные
0, //начать выполнение потока немедленно...можно CREATE_SUSPENDED
&dwThreadID //сюда вернется идентификатор потока
);

CloseHandle(hThread); //закрываем хэндл потока после завершения работы функции

Есть иные способы завершения потока. Отсылаю Вас к MSDN или книге Джеффри Рихтера "Windows для профессионалов. Создание эффективных приложений с учетом специфики 64-разрядной версии Windows". Там описаны методы управления потоками и прочее.

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 21.12.2005, 09:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо за инфу. Самое смешное то, что эта книга у меня есть, а я не додумался даже туда заглянуть.

Отвечает: estiGi
Здравствуйте, igorok!
CreateThread
TerminateThread
OpenThread
ResumeThread
SuspendThread
Ответ отправил: estiGi (статус: 9-ый класс)
Отправлен: 21.12.2005, 11:36
Оценка за ответ: 4
Комментарий оценки:
Не понятно только что это за функции WinApi или сишные.

Отвечает: Zitz
Здравствуйте, igorok!

Апи, так это CreateThread
В МФЦ есть еще класс CWinThread
Ответ отправил: Zitz (статус: 3-ий класс)
Отправлен: 21.12.2005, 13:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо буду знать


Вопрос № 31.948
Здраствуйте!
У меня есть xml - файл а мне надо заполнить CTreeCtrl (MFC) класс из этого файла.
не знаю как это организовать
Спасибо.
Отправлен: 21.12.2005, 14:45
Вопрос задал: Santey (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Santey!
Насколько я понял проблема в том, чтобы прочитать xml? Очень просто. Нужны классы для DOM модели. Они есть у билли (MSXML по-моему), а есть отдельные девелоперы. Посмотри тут: www.codeproject.com и www.codeguru.com. Там есть классы (парсеры и райтеры) для xml. Ну а в CTreeCtrl это добро скинуть - пара пустяков.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 21.12.2005, 15:42
Оценка за ответ: 4


Вопрос № 31.952
Доброго времени суток! Решил заняться изучением программирования и начал с книги М.Уэйт, С.Прата, Д.Мартин "Язык Си" Москва "МИР" 1988 г. Ошибок в листинге программ достаточно, но удавалось исправить их самому (до вчерашнего вечера). В ниже приведенном примере текста программы не могу понять, почему не отрабатывает до конца программа, доходит до ввода цены и все. Подскажите начинающему???

Приложение:

Отправлен: 21.12.2005, 15:02
Вопрос задал: Grekalov (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Straight
Здравствуйте, Grekalov!

Так вроде бы это программа ждет ввода знака 'n'. Не знаю, правда, зачем - над алгоритмом не думал, уж не обессудьте.
Ответ отправил: Straight (статус: 2-ой класс)
Отправлен: 21.12.2005, 15:13

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Grekalov!

Остановка происходит из-за строчки-цикла
while (getchar()!='n');

Цикл не завершится до тех пор, пока не будет введен символ n.

Думаю он тут не нужен, так что смело его можете удалять).

См. приложение...

Приложение:

Ответ отправил: Лучников Юрий Владимирович (статус: 6-ой класс)
Отправлен: 21.12.2005, 15:20

Отвечает: Zitz
Здравствуйте, Grekalov!

Надо так:
&(libry [count++]).value
Ответ отправил: Zitz (статус: 3-ий класс)
Отправлен: 22.12.2005, 14:40

Отвечает: Raptor1
Здравствуйте, Grekalov!
#include "stdafx.h"
# include
# include
# define MAXTIT 40
# define MAXAUT 40
# define MAXBOX 100
# define STOP " "
struct book
{
char title [MAXTIT];
char autor [MAXAUT];
float value;
};
int main(int argc, char* argv[])
{
struct book libry [MAXBOX];
int count=0;
int index=0;
char chSym;
printf("Vvedite nazvanie knigi ");
printf("Najmite klavishu [ENTER] v nachale stroki dlya ostanova ");
while (1)
{
gets(libry [count].title);
printf("Vvedite teper familiyu avtora ");
gets(libry [count].autor);
printf ("Vvedite teper cenu ");
scanf("%f", &libry [count++].value);

while (1)
{
chSym=getchar();
if(chSym=='n')
break;

if(chSym=='e')
{
index=1;
break;
}
}

if((index==1)||(count==MAXBOX))
break;
printf ("Vvedite nazvanie sleduyushey knigi ");
_flushall();
}

printf ("Vot spisok knig: ");
for (index=0; index {
printf ("%s, %s: %.2f ", libry [index].title,libry [index].autor, libry [index].value);
}
return 1;
}
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 24.12.2005, 10:37


Вопрос № 31.961
Здравствуйте эксперты.
Подскажите мне как передавть информацию (в программа на c++) по сети в Linux(ядро 2.4, компилятор g++). Так-же ли это делаеться во FreeBSD?
Зарание спасибо за примеры, описания, ссылки на информацию на русском языке.
Отправлен: 21.12.2005, 16:43
Вопрос задал: X (статус: 8-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Muad Dib
Здравствуйте, X!

Очень простой вариант - это использование библиотеки QT. Достаточно вменяемый русский перевод книги по QT есть на opennet.ru, там одна из частей посвящена как раз возможностям QT по передачи данных по http и ftp протоколам, а так же организации собственых протоклов :) через tcp/ip и udp. (Жасмин Бланшет, Марк Саммерфилд. QT: программирование GUI на С++ - КУДИЦ-ОБРАЗ, Москва, 2005 - это если бумажную версию искать.)

Если нет желания завязываться с QT посмотрите книги:
Андрей Робачевский - Операционная система UNIX - там ест пример организации передачи данных по TCP/IP и UDP;
Шон Уолтон - Создание сетевых приложений в среде Linux.

Обе можно найти в электронном виде.

Примеры приводить не буду, потому что не влезет наверное )
Ответ отправил: Muad Dib (статус: 1-ый класс)
Отправлен: 22.12.2005, 07:37
Оценка за ответ: 5


Вопрос № 31.972
Здравствуйте, уважаемые эксперты!
Пишу на C под Юникс (FreeBSD 6.0, gcc 3.4).
Подскажите, как реализовать таймар. То есть, в начале выполнения программы текущее время пишется в переменную t1, в конце программы время записывается в переменную t2. В итоге время выполнения программы T = t2 - t1.
Пробовал перенести такой вариант, который у меня был в Виндовом варианте:

clock_t start, end;
start = clock();
//программа
end = clock();
T = (end-start)/CLK_TCK;

Но это не работает - выдает отрицательное время.
Есть другой способ?
Отправлен: 21.12.2005, 20:15
Вопрос задал: Стомов Евгений (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Muad Dib
Здравствуйте, Стомов Евгений!

Посмотрите man 2 time (или какой там раздел Programmers Manual в BSD?).

В Linux есть:

bash-3.00$ man 2 time
TIME(2) Linux Programmer's Manual TIME(2)

NAME
time - get time in seconds

SYNOPSIS
#include <time.h>

time_t time(time_t *t);

DESCRIPTION
time returns the time since the Epoch (00:00:00 UTC, January 1, 1970),
measured in seconds.

If t is non-NULL, the return value is also stored in the memory pointed
to by t.

Я думаю нечто подобное должно найтись и у вас.
Ответ отправил: Muad Dib (статус: 1-ый класс)
Отправлен: 22.12.2005, 07:20

Отвечает: EPsilonDSota
Здравствуйте, Стомов Евгений!

Еще можно использовать gettimeofday.

Приложение:

---------
Открыть глаза навстречу солнцу

Ответ отправил: EPsilonDSota (статус: Практикант)
Отправлен: 22.12.2005, 09:39


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

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

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

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

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


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


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

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное