Зачем? Я где-то использовал vector??? Сразу видно - MFCшник, подключим все, что можно, авось, круче будет.
Это шутка? Почти в каждом более менее сложном программном продукте любых разработчиков есть утечки! Это самая распостраненная ошибка!
Это самая обыкновенная глупость, оправдание нерадивых кодеров, которым лень аккуратно писать или грамотно проектировать.
и ещё, я думаю, что STL не оч. удобное стредство.
Сколько лет ты им пользовался, что делаешь такие заявления? И почему он включен в стандарт ISO, а вот твой любимый MFC нет?
Возьмем например байтовый массив из STL - std::vector<BYTE> что ты скажешь, в нем лучшего чем в CByteArray ???
Садись за книжки, ботай темплейты.
Ну вот ошибки:
Убедись в том, что STL установлен. Мне не ведомы дьявольские пути мысли программеров МС, они могли сделать его отдельно устанавливаемым/подключаемым. Убедись, что ты используешь в точности написанный мной код, без всяких .h после string.
Ребяты, написать и потестировать эту несчастную replace - 5 минут, так? Так.
Искать по всему свету эти хидеры, потом искать, что в них декларировано, что можно, что нет - это не один час. НАХРЕНА???
Ты уверен, что твое решение кроссплатформенно, будет понято любым программистом, ни при каких условиях не приведет к утечке памяти, вызову левого кода, краху стека? Я использую STL - я уверен. А ты нет.
Делаться же все равно через API будет.
Смешно.
Делаем сами - делаем быстрее, и работает быстрее и размер меньше и головных болей никаких и чувство морального удовлетворения (т.е. кайф) ))
Мне больше удовлетворения доставляет готовое отлаженное приложение, чем кривой кое-как работающий кирпич, положенный в его основу и пустота вокруг.
Sharp, мне не нужна кроссплатформенность, давай не будем умными словами (понтами) бросаться )). И понятно будет любому. И к краху используемые мной ф-ции не приведут, в отличие от stl, wtl и прочих разных библиотек.
Попробуй заведомо ошибочный код:
char* ptr="aaa";
lstrcat(NULL,ptr);
ф-ция вернула ошибку и прога может анализировать результат и выполнять дальше те или иные действия.
попробуй
strcat(NULL,fmt);
из столь горячо любимых си библиотек. Что? Рухнуло? Не вернуло ошибки? Отчего? Почему?
Потому, что это не kernel.
Так что делай свои кирпичи дальше, в надежде, что за тебя всё продумали и предусмотрели...
И не надо забивать людям баки ))
P.S.
Пожалуйста, не надо рвать на отдельные слова и буквы мой пост, и не надо вкладывать в них свой смысл. Есть что сказать - наполни свои слова своим смыслом.
Sharp, мне не нужна кроссплатформенность, давай не будем умными словами (понтами) бросаться )).
Никогда не думал, что мне придется тебя просвещать, но раз ситуация обязывает... Кроссплафторменность нужна не только для того, чтобы твоя программа компилировалась под Линукс или Solaris, но и для того, чтобы она компилировалась на Win98 и, например, 64-битной Винде.
И к краху используемые мной ф-ции не приведут, в отличие от stl, wtl и прочих разных библиотек.
Если бы STL и WTL могли привести к краху, их бы не использовали серьезные программисты, до которых тебе еще расти и расти, судя по твоим утверждениями.
Что? Рухнуло? Не вернуло ошибки? Отчего? Почему?
Ботай матчасть. Wintel не единственная в мире платформа и на момент создания C++ ее даже не было в проекте.
И не надо забивать людям баки ))
Если ты считаешь помощь начинающему Си-программисту забиванием баков, я не буду больше тебя лечить. Буду насмехаться ))
Пожалуйста, не надо рвать на отдельные слова и буквы мой пост, и не надо вкладывать в них свой смысл. Есть что сказать - наполни свои слова своим смыслом.
Если бы STL и WTL могли привести к краху, их бы не использовали серьезные программисты
хи-хи, а MFC программисты не серьезные? толкьо не говори что это не так. Тебе уже я и Cresta сказали: не бросай свои тупые убеждения, как будто это самое правильное решение. Я знаю несколько программистов, из rsdn.ru, они кодят на MFC, так до их уровня, судя по твоим убеждения так точно никогда не дойти! Они создают хорошие С++ проги за несколько часов.
Я использую STL - я уверен
Хе-хе, а я использую MFC, я не уверен??? Ещё как уверен.
Вот давай так: доведи мне, что MFC , как ты сказал "кака". И ответь на мой ворпос std::vector<BYTE> что ты скажешь, в нем лучшего чем в CByteArray ???
хи-хи, а MFC программисты не серьезные? толкьо не говори что это не так.
Конечно, нет. MFC непригоден для больших проектов, неудобен и громоздок для маленьких. Я бы мог найти тебе в гугле статью на тему "Почему MFC - это плохо: для маленьких", но думаю, что ты и сам с этим справишься и не будешь больше плакать "Ну почему моя погремушка плохая???" Потому что плохая и это далеко не только мое мнение.
Тебе уже я и Cresta сказали: не бросай свои тупые убеждения, как будто это самое правильное решение.
Ты полагаешь, что программирование на С++ под Винду делится на API и MFC, cresta не может найти стандартных инклюдов и скомпилировать простейший пример. Мне кажется смешным, что вы пытаетесь меня лечить.
Хе-хе, а я использую MFC, я не уверен??? Ещё как уверен.
И ты уверен, до определенной степени (кстати, меньшей, чем в случае STL, MFC никто не стандартизовывал и не отлаживал для промышленного применения), я говорил это о коде cresta.
И ответь на мой ворпос std::vector<BYTE> что ты скажешь, в нем лучшего чем в CByteArray ???
Я уже ответил. Если ты даже не представляешь, что такое темплейты или где про них прочитать, тогда иди в детсад.
Sharp, ты хочешь сказать, что stl-wtl, которые ты призываешь использовать, надёжней и правильней, чем kernel-user-shell, которые я использую? Да?
Если сравнивать функции одного уровня типа lstrcat и STL concat, тогда скажу, что первый вариант:
1) некроссплатформенный
2) может в принципе содержать ошибки, хотя бы потому, что у тебя нет его исходников
Однако ты пытаешься сравнить правильность и качественность своего кода, использующего kernel-user-shell, с правильностью самого kernel-user-shell, что весьма смешно. То, что ты написал на коленке за 5 минут никогда не сможет быть настолько же качественно, как то, что тысячи первоклассных программистов создавали, отаживали, использовали на протяжении 20-30 лет.
Если ты даже не представляешь, что такое темплейты или где про них прочитать
Вообще-то я уже имел дело с шаблонами (темплейтами). В одном проэкте я юзал
std::vector<BYTE> , но потом из-за незначителной утечки памяти у меня прога напрчь отказывалась делать a.push_back(). Когда я заменил темплейты на CByteArray , тогда эта утечка не создавала ничего плохого. Конечно, утечку убрал и работали 2 варианта, но всетаки...
ты давай мне ответь, почему я должен переходит из MFC на STL. Перечисли приемущества STL по сравнению с MFC (ой, только не надо о стандартизировании своём). А я тебе сразу могу перечислить приемущества MFC:
1.Более упрощеный для конечного юзера интерфейс работы (имеется ввиду не вид проги, конечно, а методы классов и т. п.)
2. Наличие классов CSocket и подобных, что при наследовании делает оч. удобным сетевое программирование.
3. Наличие хорошего визарда.
Искусством уходить от ответа ты овладел почти в совершенстве. ))
МГУ научит Только в данном случае не я ухожу от ответа, а ты вопрос задал некорректно.
ты давай мне ответь, почему я должен переходит из MFC на STL.
Программист волен использовать то, что ему нравится. Не нравится STL - не ешь, однако хочу предостеречь против излишнего увлечения MFC. Это все-таки не панацея, у него очень много недостатков, например:
1) MFC навязывает не всегда удобную модель приложения, что приводит к непроизводительным затратам при разработке приложений несколько иного типа (читай, например, http://www.softcraft.ru/coding/winapi/mfcbad.shtml)
2) MFC больше не поддерживается
3) MFC - это не только красивые классы, которые все за тебя сделают (как думают и .NETчики), это так же 2-3 мегабайта системных DLLей. А если вспомнить, с какой интенсивностью программисты ругают VBшный рантайм...
4) MFC черезчур большой, поэтому программист часто вынужден вставлять куски API-кода, нарушая целостность приложения, вместо того, чтобы искать то, что ему нужно.
5) Уступает в продуктивности и VB6 и VCL
6) Недостаточно ООП, многое делается с помощью макросов
7) Визарды генерируют слишком много мусора
Таким образом, выводы примерно следующие:
2DaSharm: На MFC мир не замкнулся
2cresta: Надоест все самому писать
ну да, конечно.
У меня стоит
default:return strcat("Неопознанная ошибка №",NumStr(NumError));
- И каким фигом она вываливает ошибку? Если просто указать текст, то всё замечательно.
LPCTSTR NumStr(const int Num){
wsprintf(Buffer,"%i",Num);
return Buffer;
}
char Buffer[100];