Вопрос № 70487: Здравствуйте, эксперты. Вопрос такой. У меня прога работает с платой которая подключена к PCI. на плате заведены контакты от устройств. как мне связать прогу в реальным временем, что то типа таймера что ли сделать? ...Вопрос № 70507: Уважаемые эксперты. Подскажите как правильно экспортировать классы
из ехе-зешника создаю DLL-ку (статическая линковка) под си-билдером
функции экспортировать могу- не получается экспортировать классы
тестовый примерчик с одним класс...Вопрос № 70510: Люди пожалуйста помогите с созданием програмы на С++!!!
Задание такое !!! Описать структуру с именем student
1)Вводится Фамилия И.О.
2)№ группы.
3)Успеваемость.
дополнительные условия
а)ввод ф.и.о с клавы
б)записи ...Вопрос № 70525: Всем привет!
Меня интересует что из себя представляет сортировка методом квадратичной выборки и как она работает?...Вопрос № 70534: ШАЛОМ БРАТВА. ХОЧУ ИЗУЧАТЬ С++ . КАКАЯ КНИГА НАПИСАННА НОРМАЛЬНЫМ ЯЗЫКОМ ДЛЯ НАЧИНАЮЩЕГО ИЗУЧАТЬ С++....Вопрос № 70541: Здравствуйте, Скажите пожалуйса как можно Реализовать структуру данных "бинарное дерево" в виде параметризованного класса. Класс должен позволять
хранить объекты произвольного типа
добавлять элементы в дерево и.т.д.
И что такое...Вопрос № 70583: Здравствуйте, уважаемые эксперты! Помогите решить задачу.
Разработать функцию, которая находит в строке первый символ, который не входит в другую заданную строку.
При реализации функции запрещается пользоваться функциями библиотек языка С....Вопрос № 70585: Подскажите как приложение получает сообщения от Windows ?
И что куда и откуда перпедается, по функциям и ОС.
И еще ф-ия DispatchMessage() из цикла обраб.сообщ. возвращает
сообщение в Windows, или в Оконную процедуру?
Хочу понять доск...Вопрос № 70592: Не знаю куда задать вопрос сюда или в рассылку по API.
Подскажите как приложение получает сообщения от Windows, с помощью цикла и оконной процедуры.
Я понимаю что сообщение извлекается циклом обраб.сообщений ф-ей DispatchMessage(), далее если...
Вопрос № 70.487
Здравствуйте, эксперты. Вопрос такой. У меня прога работает с платой которая подключена к PCI. на плате заведены контакты от устройств. как мне связать прогу в реальным временем, что то типа таймера что ли сделать?
Отправлен: 11.01.2007, 16:06
Вопрос задал: Holyman (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tek
Здравствуйте, Holyman!
Мы все свои устройства(фискальник, считыватель, терминал чипованых карт, колонки АЗС) опрашиваем и командуем в отдельном потоке, работающей без таймера просто зацикленной до момента смены признака работы (синхронизация по мьютексу).
Типа:
while (working)
{
WaitForSingleObject(hMutex, INFINITE)
// опрос соответсвующего устройства
ReleaseMutex(hMutex);
}
Но для нас критично время отклика на запрос устройства(при задержке некоторые устройства впадают в ступор). А в принципе можно без отдельного потока по таймеру или вааще при необходимости если устройство чисто синхронной работы.
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 6-ой класс)
Ответ отправлен: 11.01.2007, 16:29
Отвечает: ramok
Здравствуйте, Holyman!
Общепринятая практика: необходимо написать драйвер вашего устройства. Оно и понятно, на как на уровне приложений большинство ОС не обеспечивают реальновременные интервалы.
Притом совершенно необязательно реализовывать весь фунционал стандартного драйвера, а только ту часть которую необходимо.
Написание драйвера зависит от вашей ОС:
1. для Windows необходимо использовать DDK(Driver Development Tools) для вашей версии Windows. Вот вводная http://www.evm.narod.ru/ddk.html
2. у открытых ОС примеры можно подсмотреть прямо в исходниках этих OC, есть и литература соответвтвующая, например для linux:
http://lwn.net/Kernel/LDD3/
и перевод части http://rus-linux.net/MyLDP/BOOKS/ldd2/index.html
Ответ отправил: ramok (статус: 8-ой класс)
Ответ отправлен: 11.01.2007, 19:56
Вопрос № 70.507
Уважаемые эксперты. Подскажите как правильно экспортировать классы
из ехе-зешника создаю DLL-ку (статическая линковка) под си-билдером
функции экспортировать могу- не получается экспортировать классы
тестовый примерчик с одним классом компилит без ошибок
//DLLMAINCPP.cpp
#define _DLLMAINCPP //
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#include "dllmain.h"
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//dllmain.h
void __declspec(dllexport) Message(char *s);
__declspec(dllexport) class test
{
public:
void hello(char* s);
};
если же в своей длл-ке
пишу в h-файле:
__declspec(dllexport) class tsub_window_manager: public tmdi_manager {....
для каждого экспортируемого класса
в ответ
[Linker Error] Unresolved external для кучи функций(не из этих классов а вобще из других файлов)
все инклуды подключены и вообще ехе-зешник прототип компилируется нормально
подскажите как правильно экспортировать классы
может что-то нужно дописать в cpp-файле?
Отправлен: 11.01.2007, 17:49
Вопрос задал: Texnokrat (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, Texnokrat!
при объвялении класса используем макросс AFX_CLASS_EXPORT
http://doks.gorodok.net/?p=94#t10
Ответ отправил: ramok (статус: 8-ой класс)
Ответ отправлен: 11.01.2007, 19:41 Оценка за ответ: 3 Комментарий оценки: в вышеприведеннном примере сделал class AFX_EXT_CLASS test получил Error E2450 Dllmaindllmain.h 14: Undefined structure 'AFX_EXT_CLASS' Error E2450 Dllmaindllmain.h 14: Undefined structure 'AFX_EXT_CLASS' Error E2449 Dllmaindllmain.h 14: Size of 'test' is unknown or zero Error E2141 Dllmaindllmain.h 14: Declaration syntax error Error E2090 DllmainDllmain.cpp
18: Qualifier 'test' is not a class or namespace name Error E2040 DllmainDllmain.cpp 18: Declaration terminated incorrectly при использовании __declspec(dllexport) все было нормально а кроме того не хотелось бы завязываться на MFC
Отвечает: kool
Здравствуйте, Texnokrat!
Под VC++ все работает. См. приложение.
Билдер - сплошной глюк.
Удачи!
Приложение:
Ответ отправил: kool (статус: 3-ий класс)
Ответ отправлен: 11.01.2007, 23:15 Оценка за ответ: 3 Комментарий оценки: тестовый примерчик у меня компилировался и раньше проблема возникает когда таких классов несколько хотя я делаю тоже самое но линковщик перестает видеть остальные функции длл-ки использованные в этих классах я думал может тут какое-то сокрытие имен происходит или надо еще какой-нибудь extern добавить причем надо именно на билдере так как длл-ка большая чтобы ее переделывать
Вопрос № 70.510
Люди пожалуйста помогите с созданием програмы на С++!!!
Задание такое !!! Описать структуру с именем student
1)Вводится Фамилия И.О.
2)№ группы.
3)Успеваемость.
дополнительные условия
а)ввод ф.и.о с клавы
б)записи упорядочены по номеру группы в порядке возрастания
в)вывод на дисплей ф.и.о., № группы для всех студентов которые имеют средний бал 4.0
г)если трудентов нет вывод специального сообщения
(с использованием текстового файла)
Отправлен: 11.01.2007, 17:57
Вопрос задал: VampireC++ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Терсков Сергей
Здравствуйте, VampireC++!
Вот примерный вариант. Поля в файле data.txt должны разделяться знаком ";".
//////
Пример файла data.txt
Иванов Иван Иванович;4;3.7
Петров Петр Петрович;4;4.2
Сидоров Сидор Сидорович;2;4.1
Сергеев Сергей Сергеевич;3;4.4
//////
Приложение:
Ответ отправил: Терсков Сергей (статус: 4-ый класс)
Ответ отправлен: 12.01.2007, 04:14 Оценка за ответ: 5
Вопрос № 70.525
Всем привет!
Меня интересует что из себя представляет сортировка методом квадратичной выборки и как она работает?
Отправлен: 11.01.2007, 19:49
Вопрос задал: POSTAL (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, POSTAL!
можно почитать тут
http://articles.org.ru/cfaq/index.php?qid=2128&frommostrecent=yes
Ответ отправил: ramok (статус: 8-ой класс)
Ответ отправлен: 11.01.2007, 20:01
Вопрос № 70.534
ШАЛОМ БРАТВА. ХОЧУ ИЗУЧАТЬ С++ . КАКАЯ КНИГА НАПИСАННА НОРМАЛЬНЫМ ЯЗЫКОМ ДЛЯ НАЧИНАЮЩЕГО ИЗУЧАТЬ С++.
Отправлен: 11.01.2007, 20:33
Вопрос задал: Bizhuk (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Ответ отправил: kool (статус: 3-ий класс)
Ответ отправлен: 11.01.2007, 23:21
Отвечает: Tamashev Denis M
Здравствуйте, Bizhuk!
Читай С++ глазами хакера...
Плюс есть книга я непомню как она называется на на начинается С++.NET + могу выслать на почту список литературы.
Ответ отправил: Tamashev Denis M (статус: 2-ой класс)
Ответ отправлен: 12.01.2007, 09:18
Вопрос № 70.541
Здравствуйте, Скажите пожалуйса как можно Реализовать структуру данных "бинарное дерево" в виде параметризованного класса. Класс должен позволять
хранить объекты произвольного типа
добавлять элементы в дерево и.т.д.
И что такое параметризованный класс.
Отправлен: 11.01.2007, 21:08
Вопрос задал: agp200431 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Терсков Сергей
Здравствуйте, agp200431!
Параметризованный класс - это класс на основе шаблонов. Например все контейнеры STL - это параметризованные классы. Т.е. один и тот же класс может использоваться для различных типов данных. Например можно использовать как форму vector<int> iv; (целочисленный массив), так и vector<double> dv (массив вещественных чисел). Для более глубокого понимания механизма шаблонов необходимо читать теорию C++. В примере дан параметризованный класс двоичного дерева с функцией добавления элементов.
Приложение:
Ответ отправил: Терсков Сергей (статус: 4-ый класс)
Ответ отправлен: 12.01.2007, 05:08 Оценка за ответ: 5 Комментарий оценки: Большое спасибо
Вопрос № 70.583
Здравствуйте, уважаемые эксперты! Помогите решить задачу.
Разработать функцию, которая находит в строке первый символ, который не входит в другую заданную строку.
При реализации функции запрещается пользоваться функциями библиотек языка С.
Отправлен: 12.01.2007, 07:59
Вопрос задал: Rusl (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Lemeshev Konstantin
Здравствуйте, Rusl!
В строке Str1 ищем первый символ не входящий в строку Str2. Возвращаем номер этого символа в строке Str1 или -1 если такого символа нет.
Код в приложении.
Приложение:
Ответ отправил: Lemeshev Konstantin (статус: 2-ой класс)
Ответ отправлен: 12.01.2007, 08:22
Отвечает: Терсков Сергей
Здравствуйте, Rusl!
Вот еще версия. Здесь не используются никакие флаги, но т.к. CRT функциями пользоваться нельзя, то пришлось написать собственную функцию int str_len(const char *str);. Ноблагодаря ей код выгдядит попроще, да и работу функция int find_first_not(const char *s1, const char *s2) заканчивает сразу при нахождении нужного символа.
Приложение:
Ответ отправил: Терсков Сергей (статус: 4-ый класс)
Ответ отправлен: 12.01.2007, 09:00
Отвечает: Sergijj
Здравствуйте, Rusl!
Код в приложении.
Не самый оптимальный вариант, но зато учебно-понятный.
Приложение:
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 7-ой класс)
Ответ отправлен: 12.01.2007, 09:35
Отвечает: Torsten
Здравствуйте, Rusl!
Код в приложении.
Функция StrDif - принимает два параметра, исходная строка из которой будут братся символы, и строка в которой ищется 1-ый символ которого нет в строке 1. Возвращает индекс символа, который есть в 1-ый строке, но нет во 2-ой.
SymbolCmpStr - принимает два параметра, 1-ый символ, 2-ой строка, в которой ищется этот символ. Если символ есть в строке, возращает истину, если символа в строке нет - ложь.
Демо-программа получает параметры из командной строки. После создания исполняемого файла, нужно запускать:
<name.exe> <string1> <string2>
name.exe - имя исполняемого файла
string1 - строка из которой берем символи для сравнения
string2 - строка в которой ищем символ не входящий в 1-ую строку.
Примеры:
strdif.exe hello hallo
First symbol in string 'hello'
not contain in string 'hallo'
at 2 position, value = 'e'.
strdif.exe hello hole
Strings has equal character sets.
Приложение:
--------- #define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 4-ый класс)
Ответ отправлен: 12.01.2007, 11:18
Вопрос № 70.585
Подскажите как приложение получает сообщения от Windows ?
И что куда и откуда перпедается, по функциям и ОС.
И еще ф-ия DispatchMessage() из цикла обраб.сообщ. возвращает
сообщение в Windows, или в Оконную процедуру?
Хочу понять досконально как енто работает, не могу разобраться.
Отправлен: 12.01.2007, 09:08
Вопрос задал: DEVILL (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Tamashev Denis M
Здравствуйте, DEVILL!
SendMessage();
=))) Юзай на здоровье.
Ответ отправил: Tamashev Denis M (статус: 2-ой класс)
Ответ отправлен: 12.01.2007, 09:20
Отвечает: dentist
Здравствуйте, DEVILL!
The DispatchMessage function dispatches a message to a window procedure. It is typically used to dispatch a message retrieved by the GetMessage function.
т.е.: в оконную процедуру ;-)
и давайте попробуем разобраться что происходит (не так уж и сложно).
for (;;)
{
// из очереди сообщений
// берём соответствующее данному потоку
// сообщенние
if (GetMessage(&msg, NULL, 0, 0))
{
// переводим virtual-key сообщения в character
// без этого по всей видимости, в определённых случаях, можно и обойтись
TranslateMessage(&msg);
// и собсно отправляем обработчику сообщений нашей програмулины
DispatchMessage(&msg);
} else {
return 0;
}
}
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 8-ой класс)
Ответ отправлен: 12.01.2007, 10:54
Вопрос № 70.592
Не знаю куда задать вопрос сюда или в рассылку по API.
Подскажите как приложение получает сообщения от Windows, с помощью цикла и оконной процедуры.
Я понимаю что сообщение извлекается циклом обраб.сообщений ф-ей DispatchMessage(), далее если все
нормально переается в оконную процедуру, а дальше...
И еще, ф-я DispatchMessage() если передает сообщение далее,
то куда, сразу в оконную ф-ю, или через Windows?
Отправлен: 12.01.2007, 09:45
Вопрос задал: DEVILL (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Tek
Здравствуйте, DEVILL!
Согласно MSDN, функция DispatchMessage() передет сообщение сразу в оконную процедуру целевого окна. А все действия по перенаправлению сообщений выполняет сама Windows. Собственно можно выделить три вида передачи сообщений: посыл функцией PostMessage() - помещает сообщение в очередь сообщений потока, который создал целевое окно; посыл функцией SendMessage() -помещает сообщение сразу окнау минуя очередь потока (в MSDN указано, что она непосредственно вызывает оконную процедуру целевого окна) и сообщения, генерируемые
Windows - они чаще всего тоже предварительно попадают в очередь потока.
И кстати сообщения в цикле обработки извлекаются из очереди функцией GetMessage() и ей подобными, а не DispatchMessage(), как вы указали.
Еще одна функция, которая почти всегда встречается в основном цикле обработки сообщений - TranslateMessage() - предназначена для преобразования сообщений от клавиатурного порта в сообщения о нажатии виртуалоьных клавиш(это упрощенно).
--------- WinApi - жутко неудобные костыли, MFC и VCL - немногим полезнее, но ничего лучше еще не создано (C)Почти Уинстон Черчилль :)
Ответ отправил: Tek (статус: 6-ой класс)
Ответ отправлен: 12.01.2007, 10:23