Вопрос № 90071: Добрый день уважаемые эксперты. Интересует следующий вопрос - как организовать работу с локальной сетью (поиск файлов в сети и т.д.) и насколько это реально сделать только средствами WinAPI без использования дополнительных библиотек. Подскажите пожал...Вопрос № 90089: Здравствуйте, динамическую библиотеку «Разреженные матрицы». Просто класс работает нормально, но когда его подключаешь с помощью библиотеки, метод вывода на
экран не работаtт, т.е. при запуске компилятор сразу же выдает : [Linker Error] Unresolved ex...Вопрос № 90145: Здраствуйте!
Как в MVisualStudio.NET подключать библиотеки :
WinSock32.dll
?...Вопрос № 90174: Вопрос вероятно простой. Есть приложение созданное MFC в VC как SDI, так вот нужно чтобы нельзя было изменить размеры окна. Я подозреваю, что нужно в CMainFrame в PreCreateWindow со стилем помутить, а что именно не знаю. Возможно, конечно я не прав. ...Вопрос № 90202: здравствуйте. такая задача, надо реализовать в си билдере 6.
есть сканированые картинки купюр, номиналом одна и две гривни. на форму в имэдж загружается одна из двух картинок банкнот, потом нажимая на кнопку, происходит сравнение и она выдает,как...Вопрос № 90224: Доброго времени суток уважаемые эксперты!
Я новичёк в С++ (использую Borland C++ Builder 6). Помогите пожалуйста; накупил несколько книг, читал всё, от корки до корки, в большинстве конечно, мало что понял, но ответа на вопрос не нашёл. Созд...
Вопрос № 90.071
Добрый день уважаемые эксперты. Интересует следующий вопрос - как организовать работу с локальной сетью (поиск файлов в сети и т.д.) и насколько это реально сделать только средствами WinAPI без использования дополнительных библиотек. Подскажите пожалуйста с чего лучше всего начать изучение этого вопроса. Среда разработки - MS Visual Studio, язык - С++. Заранее всем спасибо.
Отправлен: 05.06.2007, 09:37
Вопрос задал: Mastercad (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Qazzy
Здравствуйте, Mastercad!
Здравствуйте, Mastercad!
Для работы с сетью как правило юзают Netapi32.lib (которую надо подключить к проекту в разделе Link свойств проекта). В ней достаточно много функций для работы с сетью. Рекомендую побольше пользоваться MSDN и поиском в нэте типа "как сделать то-то" и т.д. . Все исходники лучше всего отрабатывать в Visual Studio 6. Вот пример кода из MSDN, который покажет кто шарится в твоей или чужой машине (если передашь имя сетевой тачки в качестве параметра этой проге):
Приложение:
Ответ отправил: Qazzy (статус: 1-ый класс)
Ответ отправлен: 05.06.2007, 14:00
Вопрос № 90.089
Здравствуйте, динамическую библиотеку «Разреженные матрицы». Просто класс работает нормально, но когда его подключаешь с помощью библиотеки, метод вывода на экран не работаtт, т.е. при запуске компилятор сразу же выдает : [Linker Error] Unresolved external 'operator <<(_STL::basic_ostream<char, _STL::char_traits<char> >&, const TSparseMatrix&)' referenced from C:\DOCUMENTS AND SETTINGS\SERVICE\РАБОЧИЙ СТОЛ\ПРОВЕРКА\PROBA.OBJ, а когда его не используешь он жалуется на деструктор. Помогите пожалуйста.
Заранее спасибо.
Приложение:
Отправлен: 05.06.2007, 11:14
Вопрос задала: Veranda86 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ilkras
Здравствуйте, Veranda86!
Возможно, что библиотека построена с использованием STL версия которого несколько отличается от STL поставляемого с вашей средой разработки. Например STP MSVC (Microsoft) отличается от стандартного.
Ответ отправил: Ilkras (статус: Студент)
Ответ отправлен: 05.06.2007, 15:48
Отвечает: Терсков Сергей
Здравствуйте, Veranda86!
В вашей программе используется устаревшее включение #include <iostream.h>, возможно это и является причиной невозможности перегрузки cout. Можно, например, использовать метод самого класса для вывода например print(). А насчет деструктора ситуация следущая. Память везде выделяется по разному:
m=new Element;
и
m=new Element[M1.r];
, но удаляете вы ее только как
if (m) delete m;
Но оператор delete подходит для удаления одиночных объектов, но не массивов. Здесь необходим оператор delete[]. Возможно что дело именно в этом.
Ответ отправил: Терсков Сергей (статус: Студент)
Ответ отправлен: 06.06.2007, 02:44
Вопрос № 90.145
Здраствуйте!
Как в MVisualStudio.NET подключать библиотеки :
WinSock32.dll
?
Отправлен: 05.06.2007, 16:22
Вопрос задал: James (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Ilkras
Здравствуйте, James !
В свойствах проекта в разделе линковки надо добавить имя WinSock32.lib, тогда построенная аппликация будет пользоваться WinSock32.dll.
Ответ отправил: Ilkras (статус: Студент)
Ответ отправлен: 05.06.2007, 17:30 Оценка за ответ: 5
Отвечает: _Solo_
Здравствуйте, James !
Вообще-то в С++ существует несколько способов подключения динамичских библиотек. Один из них- указание соответствующего *.lib- файла через командную строку компилятора (или просто добавление его в проект через "Add"->"Existing Item"). Второй вариант- в каком-нибудь h-нике, который видят все файлы проекта (stdafx.h пойдёт) написать #pragma comment(lib,"имя_файла.lib"). Так, на мой взгляд, практичнее. Не забудьте где-то там же сделать #include соответствующего h-файла. ;-)
Кроме того, библиотеку можно подключать на этапе выполнения программы через функцию LoadLibrary. Однако, на мой взгляд, этот способ оправдывает себя только в случае, когда нужно сделать что-то вроде интерфейса плагинов.
Ответ отправил: _Solo_ (статус: 1-ый класс)
Ответ отправлен: 06.06.2007, 18:34 Оценка за ответ: 5
Вопрос № 90.174
Вопрос вероятно простой. Есть приложение созданное MFC в VC как SDI, так вот нужно чтобы нельзя было изменить размеры окна. Я подозреваю, что нужно в CMainFrame в PreCreateWindow со стилем помутить, а что именно не знаю. Возможно, конечно я не прав. Рассмотрю любые предложения...
Отправлен: 05.06.2007, 19:36
Вопрос задал: Anarchist (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Olegzp
Здравствуйте, Anarchist!
Вот фрагмент из моей программы
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
cs.cx = 400;
cs.cy = 400; // выставить размеры окна
cs.style &= ~WS_SIZEBOX; // запрет на изменение размеров окна
return TRUE;
}
Ответ отправил: Olegzp (статус: 2-ой класс)
Ответ отправлен: 05.06.2007, 20:41
Отвечает: Jadd
Здравствуйте, Anarchist!
Ставим обработчик на WM_SIZING и всякий раз восстанавливаем размеры.
Удачи.
--------- Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Профессионал) Адрес: Санкт-Петербург WWW:http://www.sport-diary.ru ---- Ответ отправлен: 05.06.2007, 22:03
Отвечает: _Solo_
Здравствуйте, Anarchist!
Вы почти что правильно подозревали. Мутить со стилем нужно в функции OnCreate, когда окно уже создано- иначе ничего не получится. Необходимо СРАЗУ ПОСЛЕ
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
вставить строчку
ModifyStyle(WS_THICKFRAME,0);
Если поставить эту строчку дальше (после создания тулбара или строки состояния, то могут получиться неожиданные эффекты вроде назависимо изменяющей свой размер строки состояния).
Ответ отправил: _Solo_ (статус: 1-ый класс)
Ответ отправлен: 06.06.2007, 18:46
Вопрос № 90.202
здравствуйте. такая задача, надо реализовать в си билдере 6.
есть сканированые картинки купюр, номиналом одна и две гривни. на форму в имэдж загружается одна из двух картинок банкнот, потом нажимая на кнопку, происходит сравнение и она выдает,какой у нас номинал.
зы. на каждой из картинок внизу нарисована цифра-вот эту область с цифрой вырезаем, и по ней сравнение производим
помогите!
Отправлен: 06.06.2007, 00:01
Вопрос задал: просто (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Qazzy
Здравствуйте, просто!
Задача почти нереальная :). Можно так: если цифры 1 и 2 резко выделяются на фоне, то можно в цикле считать попиксельно цвета каждого пикселя. Допустим, цифры темные, а фон светлый. Сумма "темных" пикселов будет площадью цифры. Допустим определо опытным путем отношение площади цифры к площади области, где эта цифра находится (это чтобы не зависеть от масштаба). Допустим, у 1 - это ~0,12, а у 2 - ~0,23. Вот эту самую площадь мы и будем искать, суммируя число "темных" и "светлых" пикселов.
Т.е. считывать изображение надо попиксельно и у каждого считанного пикселя определять цвет (он как правило в шестнадцатеричной форме). Заранее надо определить диапазоны "светлых" и "темных" пикселов, а по хорошему надо отслеживать "перепады" цветов - это если всего несколько цветов (а если это на сложном фоне - то вообще засада). Конечно же, в платежных системах используют более простые, быстрые и точные механизмы определения номинала
- и многое зависит от валюты. Поэтому советую разобрать пару банкоматов или мультикасс и слить оттуда код идентификации купюр :). А потом не забыть написать об этом на этом сайте. :)
Ответ отправил: Qazzy (статус: 1-ый класс)
Ответ отправлен: 06.06.2007, 13:40
Вопрос № 90.224
Доброго времени суток уважаемые эксперты!
Я новичёк в С++ (использую Borland C++ Builder 6). Помогите пожалуйста; накупил несколько книг, читал всё, от корки до корки, в большинстве конечно, мало что понял, но ответа на вопрос не нашёл. Создал форму, там есть main menu, в одном из обработчиков items, допустим <Импортировать>, импортируется текстовый файл данных, создаю объекты своего класса Symbol, для отображения на экране, количество объектов не известно до импорта. Затем, мне, в процессе работы программы, нужно менять некоторые свойства этих
графических объектов, но тут то и возникает проблема, объекты не доступны в других обработчиках. Как мне быть? Это моя первая программа, помогите пожалуйста. Слышал, что можно использовать TObjectList, но по хелпу вообще ничего не понятно, есть ли у вас какие-нибудь примеры с использованием TObjectList. Зараннее спасибо.
Отвечает: Qazzy
Здравствуйте, Токпаев Бахтияр Бекмухаметович!
Полностью согласен с предыдущим ответом.
В общих словах классический способ работы в таком случае: 1) объявляем глобальную переменную (указатель типа char), 2) в каком-нибудь обработчике выясняем сколько будем заносить в неё "текста", выделяем столько памяти, сколько надо и считываем текст в блок памяти, на который указатель ссылается (в случае успешного выделения памяти) 3) далее обращение к глобальной переменной возможно из любой функции программы. Вообще хотелось бы увидеть саму задачу и текст написанной программы, а потом можно уже будет
сказать, что не так, пояснить все моменты. А так, возникшая у вас проблема скорее всего связана с областью видимости переменных.
Ответ отправил: Qazzy (статус: 1-ый класс)
Ответ отправлен: 06.06.2007, 13:14