Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: distance
Дата сообщения: 13.03.2007 19:33
NNS
если не мёртвое - то .NET и ADO.NET
до прихода .NET Microsoft до последнего проталкивало ADO. Лучше его и использовать.
Автор: NNS
Дата сообщения: 13.03.2007 19:35
distance
Ясно, спасибо!
Автор: Sarge1978
Дата сообщения: 15.03.2007 15:30
Возможно, ламерский вопрос по MFC.
Как можно отловить в претранслейте нажатие Ctrl+"{" или Ctrl+"}"?
Желательно, с кусочком кода. Заранее благодарен.
Автор: Lyrik
Дата сообщения: 17.03.2007 02:48
Sarge1978
Я так понял претранслейт - это PreTranslateMessage( MSG *pMsg )? Если да, то мона сделать так:
[more]
Код: {
static BYTE stFlag;
if ( pMsg->message==WM_KEYUP )
{
stFlag = 0;
}
if ( pMsg->message==WM_KEYDOWN )
{
if ( wParam==0x11 ) // код Ctrl
{
stFlag++;
}
else
{
    if ( wParam==0xDB ) // код '['
    {
     if ( stFlag==1 )
     {
// нажаты две клавиши
     stFlag = 0;
}    
}
    else
     stFlag = 0;
}
}
Автор: Sarge1978
Дата сообщения: 19.03.2007 14:18
2 Lyrik
Спасибо. Код проверил - работает. С PeekMessage не пробовал.
Еще раз спасибо огромное.
Автор: sadmn
Дата сообщения: 24.03.2007 00:30
Можно попросить знающих людей скомпилировать исходник программы RunIt!
iFolder/466214
и по возможности оставить в ветке этой программы: в разделе Программы.
А то уже лежит пол-года нескомпилированная версия.
Заранее спасибо.
Автор: Lyrik
Дата сообщения: 24.03.2007 12:20
sadmn
http://dump.ru/files/9/927888843/ - вот скопмилированный исходник. Хотите - выкладывайте
Автор: sadmn
Дата сообщения: 24.03.2007 21:59
Lyrik
Большое спаибо за помощь )
Автор: blackdevil
Дата сообщения: 28.03.2007 18:14
Ребят, а можете подсказать под винду бесплатную IDE какую-нибудь чтобы можно было графический интерфейс делать (окошечки там всякие с кнопками)? И еще вопросик: если кто пользовал Code::Blocks Studio может знаете почему отладчик не запускается и как его вообще запустить????У меня половина кнопок не работает в менюшках. Но экзешники компилируются...
Автор: sadmn
Дата сообщения: 28.03.2007 19:53
Lyrik
можешь проверить, запускается ли у тебя программа после компиляции?
у меня выдаёт сообщение RUNit LoadDLL -error SetRunitHook.
Автор: Aquest
Дата сообщения: 28.03.2007 22:07
(С++)
Как разрешить проблему?
Необходимо, чтобы пользователь вводил любое число >0.
Как сделать проверку ввода, т.е. если будет введена цифра <0 или не цифра, то
программа должна предоставить пользователю возможность ввести заново число.
Вводимое число в дальнейшем фигурирует в цикле for(i=0;i<данного числа;i++),поэтому
i должно иметь возможность сравниваться с данным числом,т.е. тип данного числа должен
соответствовать тому, чтобы с ним сравнивали число.
Автор: Lyrik
Дата сообщения: 28.03.2007 22:14
sadmn
Неа, не запускается. Необходимо библиотека runitlib.dll. Есть сорцы?
Автор: sadmn
Дата сообщения: 28.03.2007 22:23
Magister-lex, автор, давно программу не поддерживает.
Последней была версия 2.1b6a, но буквально за полгода до закрытия сайта была выложена версия 2.2b1, но в исходниках.
Соотвественно, есть только exe 2.1b6a и исходник (тот архив) 2.2b1. Длл-ок к программе никогда не шло.
Я вот подумал, может, он так намеренно сделал, чтоб исходник только для ознакомления использовали? В любом случае, спасибо.
Автор: Xaoc666
Дата сообщения: 29.03.2007 14:36
Aquest

Используй strspn, если имеется ввиду разбор строчки, введенной пользователем, а не контроль нажатия клавиш в окошке.
Автор: NNS
Дата сообщения: 30.03.2007 20:11
Вопрос про ODBC, а именно про програмное регистрирование источника данных. Собсно как эта фича реализуется? я делаю так:

Цитата:

CDatabase Db;
    SQLConfigDataSource(
NULL, ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb,*.accdb)",
"DSN=DBase\0DBQ=c:\\my.accdb");
        
    Db.OpenEx("DSN=DBase;UID=ui",CDatabase::noOdbcDialog);

но это не работает...
Автор: doc58_81oB0t
Дата сообщения: 02.04.2007 15:44
Добрый день

В программе script.cpp, вероятно, неправильно выделена память. Выделяла буквально наугад, т.к. толком не знаю, как это делается.

Суть программы в том, что она берет данные из текстовых файлов 1.txt, 2.txt и т.д. и по очереди сравнивает их с аминокислотной последовательностью sequence.txt. Сам алгоритм работает и считает правильно, но если проверить не 37, а больше файлов, то появляются ошибки памяти, т.е. память, наверно, заполняется.
(см. комментарий в функции main)

Мне хотелось бы хотя бы выяснить, как правильно выделять память с помощью new и delete для char, т.е. когда я работаю с текстом, и для массивов чисел.


В программе я это делала так:

Для char-ов:

char *symbol1;
symbol1 = new char[MAXLEN];
........
delete symbol1;


Для массивов:
double **t_matrix_allign;
t_matrix_allign = new double*[MAXLEN];
for (i=0 ; i<MAXLEN ; i++)
{
t_matrix_allign[i] = new double[MAXLEN];
}
........
for (i=0; i<MAXLEN; i++)
{
delete[] t_matrix_allign[i];
}


(MAXLEN равно, например, 200)


Заранее спасибо!


скрипт http://asus.netbynet.ru/temp/help.rar
Автор: distance
Дата сообщения: 02.04.2007 17:10
doc58_81oB0t
детально не смотрел, но судя по тапример таким строчкам

Код: // delete[] pwm;
Автор: vsDev
Дата сообщения: 03.04.2007 23:41
Есть достаточно абстрактный вопрос... Сначала хотел сделать отдельный топик - но потом решил спросить здесь. Сразу прошу прощения, если моя терминология не точна, но надеюсь в целом вопрос будет понятен
В настоящее время, в частности у мелкомягких, существует достаточно много технологий и библиотек которые можно использовать при программировании на С++: CRT, STL, ATL, MFC, WinAPI не говоря уже об CLR (.NET)
Все они частично пересекаются по набору решаемых задач. Например создать файл я могу при помощи функций WinAPI, MFC или используя стандартную библиотеку (таких примеров можно привести много)
Но как начинающему программисту правильно решить, какие средства следует использовать для решения той или иной задачи? Например один из интересующих вопросов - какие лучше всего библиотеки использовать для консольного ввода/вывода и для работы с файлами? В чем плюсы и минусы, например, cout<<... и printf()? Как правильно организовать консольный ввод/вывод в многопоточном приложении?
Если кто-то может поделиться "толковой" ссылкой или указать на литературу в которой подобные вопросы разъясняются буду премного благодарен. Также буду рад ответам в топик
Автор: xdude
Дата сообщения: 04.04.2007 00:39
vsDev
Всё зависит от того, какие задачи должно решать приложение и каким стандартам соответствовать. По поводу пересекающихся задач, решаемых различными библиотеками - не стоит путать мягкое с тёплым. Например, WinAPI - это чисто виндовый системный интерфейс, написан на C (никак не С++), и решает всякие системные задачи чисто под виндой. Его имеет смысл использовать, когда твое приложение не планируется портировать под другие ОС, и если оно достаточно требовательно к производительности, так как стандартные С-шные функции типа того же fprintf, fopen, fwrite или STL-ных filestream-ов в конечном счете всё равно вызывают те же самые API-функции, просто ты этого не видишь, так как это происходит уже в глубинах стандартной библиотеки С, или STL, то есть они (эти библиотеки и их функции/интерфейсы) являются обвязкой вокруг системного API (Виндового (WinAPI), Юниксового, и т.д., в зависимости от того, на какой платформе всё это исполняется). Ну и ещё без API-функций никак не обойтись в системном программировании.

STL - это стандартная библиотека темплейтов для С++. Там где есть С++ - есть STL. так что если хочешь писать именно на С++ (а не на С) - то очень рекомендую. Но так как её основная идея - это обеспечение кроссплатформенности и соответствие строгим стандартам, то, естественно, она предлагает весьма ограниченную функциональность. Более широкая функциональность предлагается библиотекой boost, которая, однако, не является стандартной, но широко используется наряду с STL и при этом является кросс-платформенной.
Насчет printf и cout - printf это С-шная функция, cout - это STL (то есть С++). То же самое с malloc и new - для управления динамической памятью в С юзают malloc, в С++ строго рекомендуют юзать operator new, хотя придерживаться этого правила совершенно не обязательно.

MFC - это майкросовтовская обвязка (достаточно неповоротливая и кривая) для работы с API-функциями, связанными непосредственно с графическим (оконным) интерфейсом винды. Многие её не любят, но я уже привык к её кривизне, так что часто юзаю её если мне надо быстренько склепать какое-нибудь небольшое оконное приложение.

CLR - это вообще rapid application development (RAD) framework. Это такой изврат, который майкрософт придумал, чтобы облегчить жизнь и разгрузить мозг бедным индусам, которых они нанимают в последнее время для написания своего софта. Причем, этот изврат настолько извращенный (прошу прощения за тавтологию), что он даже не совместим со стандартным языком С++, в результате чего майкрософту пришлось ещё и сам С++ извратить.

Одним словом, если не хочешь завязываться на мелкомягких, и писать свои приложения так, что они в результате будут легко компилироваться под любой другой системой, отличной от MS Windows - юзай STL и Boost для консольных приложений.
При этом я, например, стараюсь избегать, где это возможно, использования С-шных функций типа printf, malloc, fopen и т.д., так как мешать стандарты и подходы - плохая привычка, хотя, это уже личные предпочтения каждого.
Ну и не надо забывать, что С++ - это объектно-ориентированный язык, т.е., классы рулят А то часто встречается ситуация, когда код на С++ выглядит как обычный С-шный функционально-ориентированный код, и в результате не используются все вкусности и полезности объектно-ориентированного подхода в целом, и языка С++ в частности.
Автор: TeXpert
Дата сообщения: 04.04.2007 00:54
vsDev
Много информации насчёт сравнения CRT и WinAPI найдёшь в книге Рихтера.
Автор: Mickey_from_nsk
Дата сообщения: 04.04.2007 09:51
xdude

Цитата:
CLR - это вообще rapid application development (RAD) framework.

Это ты мощно загнул - внушает
Говоря строго, CLR - это просто среда исполнения некоего языка MSIL. А для девелопмента есть т.н. .NET Framework SDK. Не больше и не меньше. Хаять С++ для .NET любой сможет. Ну да, сделано так. Просто сложно состыковать Java-подобные библиотеки, да еще и с кучей ограничений с таким языком как С++. К чему это я? А! Да! Если хоца разрабатывать на .NET Framework НЕ ДРАЙВЕРЫ, лучше использовать все-таки С#. А по поводу их использовать или не их, так тут каждый для себя решает. Недалеко тут топик был - обсасывали этот вопрос.
vsDev
На вопрос "какую библиотеку учить" очень сложно сказать. Я бы сказал, что знание всех не помешает. Просто надо установить порядок обучения. Без CRT вообще мало чего можно сделать, следующим я бы поставил STL и boost, но тут может сначала WinAPI нужно - в зависимости от того когда надо начинать заниматься системными вещами с виндами. ATL и MFC, я думаю, уже не актуальны. Можно еще посмотреть в сторону Qt как межплатформенной графической-и-не-только библиотеки. Ну а дальше - по задачам.
Автор: doc58_81oB0t
Дата сообщения: 04.04.2007 15:42
distance
а возможно без ввода новых команд, как например scoped_array?
может можно решить проблему с памятью с помощью malloc и free.

падение идет после обработки 36 таблицы
Автор: floodway
Дата сообщения: 04.04.2007 20:01
Mickey_from_nsk

Цитата:
Можно еще посмотреть в сторону Qt как межплатформенной графической-и-не-только библиотеки.

поделитесь опытом: как тут с лицензиями и тому подобным (может еще какие узкие места). Поглядываю в сторону Qt, тем более он не только для GUI, но сомневаюсь по поводу использования в рабочих (проприетарных) проектах...

ps. А кто что скажет про Fox и Fltk? Есть опыт?
Автор: xdude
Дата сообщения: 04.04.2007 20:55

Цитата:
Просто сложно состыковать Java-подобные библиотеки, да еще и с кучей ограничений с таким языком как С++

Дык а к чему вообще было их стыковать, если для java-подобных библиотек есть java? Мало того, что "изобрели" C# (опять же зачем?), дык ещё и над С++ поизвращались, чтобы придать ему java-подобности. В общем, не понимаю я этих мелкосовтовских извратов - хоть убей Я вообще считаю, что С/С++ - это святое, уже бы взяли своё убожество - Visual Basic, и "изобрели" бы на его базе VB#, и подключали бы к нему яваподобные библиотеки, зачем было С++-то трогать? И индусам бы только легче жилось, и нормальным программерам репу бы чесать не приходилось. Я уже даже боюсь представить, что дальше будет: появится какой-нибудь Microsoft Assembler .NET и смежный с ним Asm#? Вместо того, чтобы хоть как-то соответствовать стандартам, они делают совершенно наоборот: отметают все стандарты как устаревшие и вводят свои собственные, причем никем кроме них самих не одобренные (взять хотя бы CRT-шные функции а ля printf/scanf и их "улучшенные и более секьюрные" аналоги printf_s/scanf_s и иже с ними). В общем, создается впечатление, что скоро под маздай будут писать одни индусы, а все C/C++-программеры старой закалки постепенно перейдут на системное программирование, причем под POSIX-системы.
Автор: vsDev
Дата сообщения: 04.04.2007 21:21
xdude, TeXpert, Mickey_from_nsk спасибо за ответы!
Ситуация потихоньку начинает проясняться
Еще вопросик немного не в ту степь: если я пишу приложение исключительно под винду и одной из целей является минимальный размер получаемого бинарника - какие при этом библиотеки лучше использовать? Ведь с дистрибутивом винды всегда распространяются бибилиотеки CRT и MFC (незнаю насчет STL, если вопрос вобще применим к ней) и - при условии, что я смогу собирать приложения с внешними библиотеками - они (приложения) будут значительно меньше по размеру. Также, прокомментируйте пожалуйста какие наиболее типичные проблемы могут быть при использовании такого подхода?



Автор: linder
Дата сообщения: 04.04.2007 21:41
Здравствуйте, я хотел написать программу для Linux систем, которая строила бы спектр
сигнала взятого с линейного входа в РЕАЛЬНОМ времени.
Алгоритм быстрого фурье преобразование найти не составляет труда.
проблема в том как мне работать с звуковой картой, как синхронизироваться
и как это реализовано в Linux и Windows.
Подскажите пожалуйста ссылки на примеры,библиотеки,форумы,мануалы и книги, в которых может быть освещенна моя проблема
Заранее благодарю
Автор: Abs62
Дата сообщения: 04.04.2007 21:46
vsDev

Цитата:
Еще вопросик немного не в ту степь: если я пишу приложение исключительно под винду и одной из целей является минимальный размер получаемого бинарника - какие при этом библиотеки лучше использовать?

Тогда лучше вообще отказаться от дополнительных библиотек (в идеале, и от CRT), и работать на чистом WinAPI. Загляни в эту тему.

Цитата:
Также, прокомментируйте пожалуйста какие наиболее типичные проблемы могут быть при использовании такого подхода?

Рутинного кодирования больше. Зато есть хорошая возможность изучить WinAPI - это не будет лишним даже при использовании дополнительных библиотек.
Автор: xdude
Дата сообщения: 04.04.2007 23:24

Цитата:
с дистрибутивом винды всегда распространяются бибилиотеки CRT и MFC (незнаю насчет STL...)

CRT и MFC с виндой распространяются, но бывает нестыковка версий: ты пишешь под одну, которая установилась вместе с Visual Studio, а на стандартной чистой винде такой либо уже нет, либо еще нет. STL - это вообще не подключаемая библиотека, там все классы очень легковесные и при этом инлайновые, то есть, внедряются прямо в твой код, и ты ни от каких внешних библиотек не зависишь (хотя, под Linux/Unix есть такая библиотека как libstdc++, не знаю, правда, зачем конкретно она нужна и что конкретно от STL в ней находится. если вообще что-то находится).
CRT и MFC можно линковать статически, при этом ты ни от каких библиотек зависеть не будешь, правда, бинарник немного раздуется.
Есть ещё ATL, это тоже чисто мелкомягковская библиотека темплейтов, и насколько я понимаю, современный MFC её тоже юзает (хотя, я могу и ошибаться).
Насчет WinAPI - да, это путь истинного Джедая, который вообще по жизни легких путей не ищет, но в результате получает кучу экспириенса, левелап и респект и уважуху братвы . WinApi - это C, и никакого С++. Но никто не мешает сделать свои С++-сные классы-обертки по типу того же MFC, но более легковесные. Хотя, стоит ли изобретать велосипед?
Есть ещё одна виндовая темплейтовая (и насколько я понимаю, легковесная) GUI-библиотека-обвязка вокруг WinAPI - WTL (wtl.sf.net), основанная на ATL. И многие люди о ней очень высокого мнения (говорят, она гораздо более пряморукая чем MFC), хотя сам я её еще не юзал.
Ну и существует еще целая куча кросс-платформенных GUI-библиотек, по типу wxWidgets, GTK, и иже с ними, которые в отличие от Qt распространяются под различными фрёвыми лицензиями (от GPL/LGPL до BSD).
В общем, опять же повторюсь - всё зависит от того, что именно ты хочешь разрабатывать. Если какого-нибудь трояна или червя - то однозначно WinAPI
Автор: Mickey_from_nsk
Дата сообщения: 05.04.2007 06:14
floodway

Цитата:
поделитесь опытом: как тут с лицензиями и тому подобным (может еще какие узкие места). Поглядываю в сторону Qt, тем более он не только для GUI, но сомневаюсь по поводу использования в рабочих (проприетарных) проектах...

Увы, по этому поводу опыта нет.
vsDev

Цитата:
Еще вопросик немного не в ту степь: если я пишу приложение исключительно под винду и одной из целей является минимальный размер получаемого бинарника

Дык, тебе чего нужно? минимальный размер бинарника или минимум занимаемой памяти? Это две большие разницы.
В сторону минимальных размеров программ - лучше уж тогда перейти на .NET Framework. Мы втроем писали библиотеку графики больше года, она до сих пор, если выкинуть все картинки занимает не более полумегабайта. Правда в памяти это добро мегов до 30 разворачивается.
Второй вариант - для злобных маньяков - ассемблер. Круче его только супероптимизирующие компиляторы делают.
xdude

Цитата:
Дык а к чему вообще было их стыковать, если для java-подобных библиотек есть java?

Возможно ты не в теме, но сан и так уже отсудил у микрософта дофига денюшек за java. Да и идеи в Java и в .NET принципиально разные заложены - как в платформах.

Цитата:
В общем, не понимаю я этих мелкосовтовских извратов - хоть убей

Ну, как вариант, попробуй разобраться, почему они так сделали. Там все логично, на самом деле. Рихтера почитай, что ли.

Цитата:
уже бы взяли своё убожество - Visual Basic, и "изобрели" бы на его базе VB#

Не поверишь - взяли и сделали - получился VB.NET.
А что им делать, если Я не люблю синтаксис VB, а использовать .NET для моих задач намного лучше чем что либо другое?

Цитата:
появится какой-нибудь Microsoft Assembler .NET и смежный с ним Asm#?

Опять таки не поверишь, уже есть - ILASM. Причем кроссплатформенный, объектно-ориентированный etc, etc.
Цитата:
отметают все стандарты как устаревшие и вводят свои собственные, причем никем кроме них самих не одобренные

А что делать, если действительно они устарели? Да и как говорится - результат на лицо. Последние версии виндов и продуктов, которые сделаны без использования многих стандартных функций намного стабильнее
Цитата:
В общем, создается впечатление, что скоро под маздай будут писать одни индусы, а все C/C++-программеры старой закалки постепенно перейдут на системное программирование, причем под POSIX-системы

Ну по крайней мере один "не индус" найдется
А посикс действительно устарел. Просто комитеты по стандартизации не могут быстро рассмотреть все изменения НЕОБХОДИМЫЕ для разработчиков, в отличие от крупных компаний.
Автор: xdude
Дата сообщения: 05.04.2007 11:28
Mickey_from_nsk
Ну, не будем тут разводить Holey War, думаю, подобных тем в инете нарыть можно тоннами
Просто я не понимаю одного: да, действительно STL многого не умеет и не тянет на кросплатформенную объектно-ориентированную System API. Ну дык взяли бы и разработали такую именно под С++. Без всяких там gcnew и делфи-подобных поинтеров и прочих "полезностей". Чтобы нормальный хомо-сапиенс, программирующий на С++, так себе дальше и продолжал программировать, только с более удобной, объектно-ориентированной API-библиотекой. Пусть бы она не покрывала весь спектр возможностей, но хотя бы работу с файлами, каталогами, сокетами и проч. и проч., что имеется как в винде, так и в позиксе. А свой .NET прикрутили бы к С++.NET, и все остальные сапиенсы, в том числе и хомо, которым надо что-то быстренько наваять, писали бы именно на нем. А так хочешь-не хочешь, а юзай .NET, потому что даже тому же бусту ещё очень далеко до идеала.
Ну и еще один момент который я понять не могу и просто отказываюсь: С++ изначально был языком, который компилируется в машинный код. Зачем нужно .NET-овские приложения компилить в байткод, если опять же для этих целей есть Java и куча разных скриптовых языков, хотя бы тот же Python или Perl. Ну изобрел Яву не мелкософт, а Сан, ну что теперь поделаешь? Нет же, надо всем доказать что у нас писька длиннее, и подсадить всех на эту письку: сделать .NET и извратить под него С++ (причем, я помню времена, когда они и яву хотели извратить по-своему, и правильно сделал Сан, что начал за это с ними судиться).
В общем, дискуссия вышла за пределы топика, и я думаю, смысла её продолжать нет.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.