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

Инвестиции: Вопрос-Ответ

  Все выпуски  

C/C++ Вопрос-Ответ Выпуск No34


C/C++ Вопрос-Ответ

Выпуск      : 34
Подписчиков : 3380
Cайт        : SoftMaker.com.ru
Архив       : C/C++ Вопрос-Ответ (архив)
В этом выпуске
Как стать хакером

Как стать хакером

От ведущего

Здравствуйте уважаемые подписчики !

Как всегда, рад приветствовть вас на страницах этой рассылки.

Напоминаю, что, как обычно, вы можете отправить свои пожелания (замечания, предложения, сообщения об ошибках) по поводу рассылки и сайта по этому адресу.

Если вы хотите создать и вести какой либо раздел в этой рассылке - также пишите мне.

И, как всегда, вы можете задать свои вопросы по программированию на сайте в форуме.
Или обсудить их в дискуссионном листе "Программирование. форум !!!".

Многим также может быть интересна рассылка: Visual С++ - расширенное программирование, где можно прочитать описания нестандартных приемов программирования с помощъю библиотеки MFC - 'трюков', 'хаков', недокументированных функций, а также рассылка Программирование на JavaScript, в которой публикуются и описываются оригинальные скрипты, решения многих практических задач, готовые для применения на сайте.

С уважением, Вахтуров Виктор.

Подписчикам

Чтобы заранее разрешить возможные недоразумения, прошу Вас помнить, что вопросы публикуются в рассылке только один раз. Поэтому, если Вам не ответили в этом выпуске, или ваш вопрос не был опубликован, пришлите его еще раз. Не стоит отвечать на вопрос, который был задан в предыдущем выпуске (за исключением случая, когда он снова опубликован в этом).

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

Небольшое примечание. Господа, если Вы хотите, чтобы Ваш e-mail был опубликован в рассылке, специально и явно укажите это в письме. Иначе e-mail адреса, указанные в теле Вашего письма в рассылке опубликованы не будут.

Вопросы

Для того, чтобы задать свой вопрос, кликните этой ссылке (вопрос будет опубликован в следующем номере).
Вы можете задавать любые вопросы, касающиеся программирования на языке C и C++. Это могут быть вопросы, касающиеся как конструкций языка, применения библиотек классов, шаблонов (таких как MFC или STL), использования компиляторов, так и самой философии программирования на C или C++. Здесь нет ограничений - спрашивайте и получайте ответы.

Вопрос № 128 ( Lesh )

Приветствую !

У меня такой вопросик.
Известно, что оператор new в C++ может вернуть NULL, если не хватит памяти. Однако, я читал, что этот же оператор может и выкидывать исключение. Я что то не пойму в каких случаях вылетает исключение, а в каких возвращается NULL ?
Это зависит от компилятора, или еще от чего то ?
Может, есть какие то настройки ?
Меня бы удовлетворило проверять на NULL возвращенный указатель. Но как быть с исключениями. Не писать же каждый раз что то типа:

char *p = NULL;

try
{
    p = new char[10];
}
catch(...)
{
}

if(p != NULL)
{
    ...

А хочется сделать свой код максимально ошибкоустойчивым.
Как быть ?

Ответить на вопрос

Вопрос № 129 ( Nika )

Уважаемые программисты !

Я пока только начинаю осваивать C++ поэтому прошу не пинать сразу :))))

Не поделится ли кто ссылочками на теорию по бинарным деревьям.
А если эта теория будет с примерами программ на C++ будет просто здорово :))))

Или напишите пожалуйста в рассылку что это такое и с чем их едят эти деревья :))

Ответить на вопрос

Вопрос № 130 ( strong )

Не знает ли кто где взять исходники на C++ или бесплатную библиотеку для воспроизведения mp3. Или хотя бы чтобы в wav можно было конвертировать.

Ответить на вопрос

Вопрос № 131 ( Ilya )

Я хотел бы задать немного философский вопрос.

Господа, как Вы думаете стоит ли сейчас писать программы на MFC, или у него совсем нет будущего ?
Сейчас все занимаются .NET. Как вы думаете, что будет с MFC лет через 4-5 ?
Будут ли вообще программы, написанные сейчас на MFC работать тогда ?

В общем, стоит ли заниматься им сейчас ?

Ответить на вопрос

Ответы

Ниже приведены вопросы предыдущего выпуска и ответы на них.

Вопрос № 124 ( mdciwr )

Народ, помогите! Бьюсь над этой проблемой не одну неделю!
Если вкратце ошибка - "out of memory" - нехватка памяти. (malloc,
calloc, оператор new, и даже функция CoCreateInstance для ATL классов
- выдает одно и то же). Для обычных переменных решить проблему можно с пощью функций
LocalAlloc, VirtualAlloc, GlobalAlloc. А вот как для ATL-классов и
т.п. - не знаю.. Разузнал, что
это связано со стеком потока. Вопрос вот чем: можно ли увеличить
(увеличить максимальный резерв) размер стека текущего процесса. А то
переписываю библиотеки DLL одной своей программы на C++ - а в одном
классе требуется рекурсивный разбор данных(рекурсивный разбор файлов
xml). Искал в MSDN - там вроде подобной информации нет (насколько я
понимаю английский язык). Короче, чтоб в потоке можно было увеличивать
размер его стека, в зависимости от потребности. А если такое не
возможно - какие есть решения подобной проблемы.
И если можно информации об этой теме. (Пишу на VC.NET 2002)

Ответ ( Anton Golubtsov )

Код в студию.
Что касается стека насколько я помню он выделяется для локальных
переменных не не для памяти из кучи.

Ответ ( Сергей Наумов )

Можно использовать кучи (heap).
В функции ее создания
HANDLE HeapCreate(DWORD fOption,SIZE_T dwInitSize,SIZE_T dwMaxSize);
как раз есть возможность указать размер стэка, по умолчанию 1 Мб.
для MSDN такие функции:
HeapAlloc - захват памяти
HeapReAlloc - перезахват
HeapSize - максимальный размер кучи
HeapFree - освбождение кучи
HeapDestroy - разрушение кучи
Вопрос № 125 ( Rahmatjon Hakimov )

Здравия Всем! Помогите разобраться в следующем:
1) Существуют ли свободнораспространяемые (FOSS) компиляторы С++ для MS Windows?
2) Если да, то где их можно скачать? Каковы они в сравнении с Visual C++ и C++ Builder? Насколько они популярны?
3) У меня несколько БД с формами, отчетами, запросами SQL на MS Access. Хочу переписать их на С++. Можно ли это сделать с помощью этих компиляторов? Насколько это будет сложно? Вообще, как пишутся БД на С++, если нет Visual Studio Enterprise Edition?
4) Можно ли на С++ писать оконные приложения, которые можно скомпилировать как под MS Windows, так и под Линукс?

Ответ ( Anton Golubtsov )

Здравия Всем! Помогите разобраться в следующем:
> 1) Существуют ли свободнораспространяемые (FOSS) компиляторы С++ для MS Windows?

gcc(смотрите в cygwin, msys, mingw, devc++)
есть бесплатные версии от intel(icc) и от Microsoft

> 2) Если да, то где их можно скачать? Каковы они в сравнении с Visual C++ и C++ Builder? Насколько они популярны?

google поможет(лично мне лень набивать эти слова к строке поиска)

C++ Builder и Visual C++ среды разработки.

Каждый вибирает, то, что удобней, C++ он и есть C++

> 3) У меня несколько БД с формами, отчетами, запросами SQL на MS Access. Хочу переписать их на С++. Можно ли это сделать с помощью этих компиляторов? Насколько это будет сложно? Вообще, как пишутся БД на С++, если нет Visual Studio Enterprise Edition?

На C++ БД пишут разработчики СУБД :)
Используйте любой удобный интерфейс доступа к БД, например ADO или
ODBC и любой из компиляторов и сред разработки.
Если вас не волнует вопрос авторского права используй C++ Builder или
Visual C++ разници большой я так понимаю для вас нет(иначе бы не было
этого вопроса), куча кнопок и рюшечек позволит быстро разработать
интерфейс. RAD система чего тут скажешь.


> 4) Можно ли на С++ писать оконные приложения, которые можно скомпилировать как под MS Windows, так и под Линукс?

Легко и не принуждённо, вам помогут BuilderX, Kylix, gcc+QT/GTK,
mingw,msys, cygwin
опять же google + ключевые слова
позможно вам пригодится это слово - кросскомпиляция

Удачи.

Ответ ( deepmindster )

На с++ написать кроссплатформенное приложение можно. Библиотека QT (есть
свободная лицензия) и библиотека gtk2 (тоже свободная). Компилятор gcc.
Смотри в сторону Cygwin. Для БД лучше использовать mysql или postgres и
написать оболочку на c++ или java. Или веб-приложение, что гораздо
проще, кроссплатформенней и быстрее в разработке. Кроме того, нужно
установить только веб-сервер и язык программирования (например perl or
php). Ну и браузер, конечно. Если такое решение устраиает - это самый
быстрый вариант.

Ответ ( Евгений Очеретянный )

Трям, q.

1 и 2) Ну, для начала стоит сказать, что сами компиляторы Visual C++ и
Borland С++ бесплатны. ;) Кроме них есть ещё множество компиляторов,
как минимум половина которых бесплатна. Например, есть gcc
портированный под винды.
3) Сделать можно. Только стоит ли? Access львиную долю работы делает
за вас, что позволяет сосредоточиться на интерфейсе форм, построении
запросов и отчётов. При этом вручную вы мало что делаете. А на С
придётся делать вручную _всё_.
4) Можно. Например, используя библиотеку GTK+. Правда, без
установленного GTK+ такое приложение запускаться не будет. :)
Можно. конечно. постараться через дефайны разрулить использование той
или иной оконной библиотеки, но задача нетривиальна и с наскока не
решается.
Вопрос № 126 ( Arsa )

Hi, All ! Уважаемые программисты, не подскажет ли кто как можно отправить письмо из своего приложения без использования MAPI. MAPI кладет письмо в почтовик, но некоторые проги могут слать письма непосредственно, без использования почтовых программ.
То есть вопрос заключается в том, как написать мини-почтовик ?

Ответ ( Valentin O. Nikolaev )

Я так понимаю, что если Вы упоминаете MAPI, то вопрос относится к платформе Win32. В общем случае, для этого нужно самому писать для Вашей программы код, реализующий функции почтового клиента. Но, вероятно, можно найти где-нибудь и соответствующие библиотечки или запросить их в программистских форумах.
А для ..NET-платформы библиотека классов FCL (по крайней мере в последней ее версии) предоставляет соответствующие возможности - см. System.Net.Mail Namespace в MSDN Lybrary.
Валентин

Ответ ( deepmindster )

Смотри описание SMTP протокола. Потом открывай сокет и пиши... абсолютно
не проблема, в сети полно примеров.

Ответ ( Жоламан Кубалиев )

Здравствуйте q !

Прочитай RFC822 и на его основе реализуй с использование TCP/IP
возможность простой отправки почты, делается это примерно так
ты соединяешся по протоколу TCP/IP на 25 порт посылаешь 'hello',
сервак тебе отвечает типа все ок затем посылаешь заколовой типа
кому,зачем,от кого и т.д. Советую поискать статьи(литер.) на тему SMTP и
MIME, для отправки POP3.
Вопрос № 127 ( mavrinok )

Господа, я программирую на C++. Раньше писал на Builder-е, сейчас пересел на Visual C++ (2003). И у меня такой вопрос. Посоветуйте, пожалуйста библиотеку для работы с регулярными выражениями, чтобы можно было просто использовать с VC.
Хочется, чтобы она была и бесплатной и мощной. Есть такие ?

Ответ ( Karen Hakhumyan )

Hi!

Это есть в библиотеке ATL.

#include

Ответ ( Straight )

Есть библиотека PCRE. Она и бесплатная, и мощная, и мультиплатформенная.

Ответ ( Anton Golubtsov )

Добрый день!

WWW.BOOST.ORG вас спасёт.
а точнее boost_regex

удачи

Ответ ( deepmindster )

Возможно, pcre . Правда не уверен насчёт вижуал спп, зато уверен насчёт
мощности и простоты. и свободная лицензия.

Ответ ( Жоламан Кубалиев )

Здравствуйте q !

Boost есть такая библиотека поищи на sourceforge.net

Ответ ( Vaga )

http://www.codeproject.com/string/regex__.asp
http://www.boost.org/
или другой вариант: использовать класс CAtlRegExp (#include "atlrx.h"), который является составной частью ATL.

Ответ ( Roman )

Boost. Она вроде бы и единственная и бесплатная.
Анонсы книг по C/C++
C++. Практический подход к решению проблем программирования (+ CD-ROM)
C++. Практический подход к решению проблем программирования (+ CD-ROM)

Автор: Мэтью Уилсон

С++ - изумительных язык, но не идеальный. Если вы давно занимаетесь разработками на С++, эта книга поможет вам по-новому посмотреть на те сложные проблемы, с которыми приходится сталкиваться при программировании, и освоить мощные методы, которые вы никогда раньше не применяли. Если вы новичок в С++, то научитесь принципам программирования, которые позволят вам более эффективно реализовывать все ваши проекты.

В ходе чтения книги вы научитесь:

  • преодолевать недостатки системы типов С++;
  • обеспечивать выполнение требований проекта программного обеспечения с помощью ограничений, соглашений и утверждений;
  • правильно обрабатывать ситуации, не оговоренные стандартом, включая проблемы, связанные с динамическими библиотеками, статическими объектами и поточной организацией вычислений;
  • обеспечивать совместимость динамически загружаемых компонентов на уровне двоичных модулей;
  • понимать недостатки неявных преобразований и связанные с ними затраты и применять альтернативные подходы;
  • повышать совместимость различных компиляторов, библиотек и операционных сред; - помогать компилятору обнаруживать больше ошибок и работать более эффективно; - понимать, какие аспекты стиля влияют на надежность;
  • применять механизм захвата ресурсов при инициализации при решении различных задач;
  • умело обращаться со странной связью, временами возникающей между массивами и указателями;
  • использовать шаблонное программирование для повышения гибкости и устойчивости;
  • расширять С++, в том числе быстрой конкатенацией строк, настоящими NULL-указателями, гибкими буферами памяти, свойствами, многомерными массивами и диапазонами.
Прилагаемый компакт-диск содержит много различной ценной информации: компиляторы, библиотеки, тестовые программы, инструментальные средства и служебные программы, а также подборку журнальных статей автора.

Страница книги на Озоне
Программирование в Microsoft Visual C++ 2005. Самоучитель
Программирование в Microsoft Visual C++ 2005. Самоучитель

Автор: А. П. Сергеев, А. Н. Терен

Эта книга - отличное пособие по самостоятельному освоению языка C++. В ней вы найдете ответы на все вопросы, неизбежно возникающие у программистов, начинающих работать с этим языком. Диапазон рассматриваемых тем чрезвычайно широк - от простейшей консольной программы, выводящей на экран крылатую фразу "Здравствуй, мир", до описания новейшей IDE Microsoft Visual Studio 2005, важнейших понятий объектно-ориентированного программирования и основных концепций Microsoft .NET. Теоретические положения иллюстрируются многочисленными практическими примерами.

Круг читателей книги - от начинающих до опытных разработчиков на языке программирования C++.

Страница книги на Озоне
Рассылки и дискуссионные листы компьютерной тематики
Рассылки
Программирование на JavaScript

Все аспекты программирования на JavaScript - нестандартные приемы, ОРИГИНАЛЬНЫЕ скрипты, авторские статьи и наработки. "JavaScript solutions" - в каждом выпуске готовый к применению ИНТЕРЕСНЫЙ скрипт (исходный код с комментариями).

Дискуссионные листы
Программирование. Форум !!!

Самый популярный дискуссионный лист по программированию на subscribe.ru, существующий с момента открытия сервиса дискуссионных листов !

Задайте здесь любой вопрос по программированию - и Вы получите ответ. Участвуйте в оживленных дискуссиях, обсуждайте интересные темы. Давайте ответы сами. Ведь это форум !!! Здесь просто интересно ! Присоединяйтесь !

Вебстроительство. Форум !!!

В дискуссионном листе ведется обсуждение различных аспектов создания сайтов - написание скриптов, использование, настройка портальных движков, и многое другое. Присоединяйтесь !

Поисковые системы. Форум !!!

Этот дискуссионный лист посвящен обсуждению поиковых систем, методов индексации сайтов поисковиками, способам оптимизации сайта под поисковые системы.

Хостинг. Обзоры и обсуждения платного и бесплатного хостинга.

Вы ищете хостинг (платный, бесплатный) ? Хотите спросить совета в выборе ? Можете обсудить это здесь. Поделитесь советом, если знаете. Или узнайте больше. Все о хостинге.


Всего доброго. До встречи в следующем номере.

В избранное