Вопрос № 81344: Доброго времени суток, уважаемые эксперты!
Помогите, пожалуйста, мне с одной проблемой.
Пишу программу на C++ Builder 6.0.
В приложении текст программы, в которой возникает ошибка.
Суть такова. Я создаю свой класс TMyClass. Помещ...Вопрос № 81372: Уважаемые эксперты! В С++ пытаюсь запустить программу и получаю сообщение "MSVCP80D.dll не был найден" Пытался переустановить программу - не помогает, писал программу заново - не помогает!...Вопрос № 81374: Здравствуйте Эксперты!
Пишу в Builder C++ 2006. Сталкнулся с такой проблемой. Рисую на канве компонента Image. При увеличени размера формы мне нужно чтобы размеры Image тоже увеличивались, так вот размеры Image увеличиваются а размеры канвы остаю...Вопрос № 81379: Здравствуйте, уважаемые эксперты!
Решил ознакомиться с языком программирования С++, поставил С++ Builder 6. Возниклы следущие вопросы:
1. Расскажите, как работать с Ini файлами и Реестром (основные функции).
2. Каким образом мне перевесли...Вопрос № 81445: Всем доброго времени суток!
Вот приспичило мне написать программу перехвата для одной проги(типа r_admin, короче управление компьютерным клубом), суть такова что мне нужно знать что за пакеты она шлет, притом в этих пакетах точно содержится текст...
Вопрос № 81.344
Доброго времени суток, уважаемые эксперты!
Помогите, пожалуйста, мне с одной проблемой.
Пишу программу на C++ Builder 6.0.
В приложении текст программы, в которой возникает ошибка.
Суть такова. Я создаю свой класс TMyClass. Помещаю объект этого класса (MyObject) в описание класса формы (т.е. делаю его членом класса TForm1). Мне нужно методом MakeSmth класса TMyClass произвести кое-какие действия с использованием визуальных компонентов формы и ее обычных членов (на примере - PaintBox'a и метода Line).
В результате, когда вызываю Form1->MyObject.MakeSmth(); , происходит ошибка адресации на строке с вызовом этого метода. Что я неправильно делаю?
Отвечает: kool
Здравствуйте, Ferruccio Bonipiero!
Во-первых PaintBox1 и Button1 - не иниированы.
А значит они указывают в никуда т.е. на
невыделенную память - результат - ошибка
обращения к памяти.
Где-нибудь нужно выделить память
Например так ...->PaintBox1 = new TPaintBox.
Удачи!
--------- I am.
Ответ отправил: kool (статус: Студент)
Ответ отправлен: 06.04.2007, 19:40
Отвечает: John Paramol
Здравствуйте, Ferruccio Bonipiero!
Обратите внимание на строку extern PACKAGE TForm1 *Form1;
Макрос PACKAGE на самом деле раскрывается в выражение вида __declspec(package).
Этот модификатор обеспечивает импортирование/экспортирование экземпляров класса из пакетов (packages).
Это расширение языка C++ Builder, созданное для поддержки библиотек VCL и CLX. Таким образом, это не входит в стандарт ANSI С++, и, если Вы изучаете программирование на C++, а не программирование в среде C++ Builder, то не стоит заострять особого внимания на этом.
Но, кроме того, это анулирует свойство спецификатора extern связывать объявленный объект с определенным внешним объектом. Это означает, что если обращаться к объекту Form1 внутри файла UNIT1.H, то при этом будет возникать либо ошибка адресации, либо будет использован другой объект, который отличается от Form1, определенном в UNIT1.CPP.
Таким образом, ваш код будет работать при одном из следующих изменений:
- если убрать макрос PACKAGE из объявления Form1 в заголовочном файле
- если перенести определения методов классов из заголовочного файла в файл cpp.
Могу только дать один совет. Не помещайте определения методов класса внутри заголовочного файла, а помещайте их внутри соответствующего ему файла cpp.
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 7-ой класс)
Ответ отправлен: 06.04.2007, 22:06 Оценка за ответ: 5
Отвечает: Ilkras
Здравствуйте, Ferruccio Bonipiero!
Вы написали текст функции TMyClass::MakeSmth() в хедере. Значит компилироваться он будет в каком-то другом файле. В файле, в котором Form1 может быть как то переопределен. Далее этот хедер может быть включен в текст больше одного раза, он может быть включен в разные файлы - вобщем полный бардак.
Вынесете текст функций в "срр" файл. Постройте заново и если будет ошибка присылайте текст ее.
Ответ отправил: Ilkras (статус: 6-ой класс)
Ответ отправлен: 07.04.2007, 09:40 Оценка за ответ: 5
Вопрос № 81.372
Уважаемые эксперты! В С++ пытаюсь запустить программу и получаю сообщение "MSVCP80D.dll не был найден" Пытался переустановить программу - не помогает, писал программу заново - не помогает!
Отправлен: 06.04.2007, 21:37
Вопрос задал: Dsi270282 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Azemtsov
Здравствуйте, Dsi270282!
Вероятно , какие-то проблемы с Framework, который обычно ставится вместе с Microsoft Visual Studio. Попробуйте переустановить Framework. Возможно, поможет.
Удачи.
Ответ отправил: Azemtsov (статус: 2-ой класс)
Ответ отправлен: 06.04.2007, 21:45
Отвечает: Uz Ab cd
Здравствуйте, Dsi270282!
Судя по всему эта библиотека подключена у тебя динамическе, по пробуй подключить её статическе.
Далее я напишу способ устранения этой проблемы:
Зайди в свойства проекта Property Pages->Configuration Properties->C/C++->Code Generation->Runtime Library->Multi-threaded(/MT).
После таких настроек размер EXE файла не множко увеличится, зато программа будет работать даже на тех компьютерах на которых этой библиотеки нет
Источник: http://forum.pmg.org.ru
--------- Большому кораблю - большой айсберг
Ответ отправил: Uz Ab cd (статус: 3-ий класс)
Ответ отправлен: 07.04.2007, 10:32 Оценка за ответ: 5
Отвечает: Neolot
Здравствуйте, Dsi270282!
Найдите этот файл в Google, скачайте и положите в папку System32.
--------- Глупость - это не отсутствие ума, это такой ум! (с) Александр Лебедь
Ответ отправил: Neolot (статус: 5-ый класс)
Ответ отправлен: 10.04.2007, 11:53
Вопрос № 81.374
Здравствуйте Эксперты!
Пишу в Builder C++ 2006. Сталкнулся с такой проблемой. Рисую на канве компонента Image. При увеличени размера формы мне нужно чтобы размеры Image тоже увеличивались, так вот размеры Image увеличиваются а размеры канвы остаются такими же и на новом(увеличенном) участве рисуемое изображени не видно. Подскажите пожалуйсто как иправить.
Приложение:
Отправлен: 06.04.2007, 22:01
Вопрос задал: Gray (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: John Paramol
Здравствуйте, Gray!
Возмодно, у вашего объекта Image1 свойство AutoSize выставлено в true. Можно выставить его в false. Или же вместе с изменением размеров Image1 изменяйте размеры Image1->Picture->Bitmap.
Удачи
--------- 1=2, at values 1 large enough
Ответ отправил: John Paramol (статус: 7-ой класс)
Ответ отправлен: 06.04.2007, 22:22 Оценка за ответ: 5 Комментарий оценки: Спасибо большое разобрался с вашей помощью!
Отвечает: Unreal2004
Здравствуйте, Gray!
Вот такой код работает корректно
Image1->Width = Form1->Width - 50;
Image1->Height = Form1->Height - 50;
Image1->Picture->Bitmap->Width = Form1->Width - 50;
Image1->Picture->Bitmap->Height = Form1->Height - 50;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
Ответ отправил: Unreal2004 (статус: 2-ой класс)
Ответ отправлен: 07.04.2007, 08:50 Оценка за ответ: 5 Комментарий оценки: Спасобо! То что надо!
Вопрос № 81.379
Здравствуйте, уважаемые эксперты!
Решил ознакомиться с языком программирования С++, поставил С++ Builder 6. Возниклы следущие вопросы:
1. Расскажите, как работать с Ini файлами и Реестром (основные функции).
2. Каким образом мне перевесли переменную типа Ansistring в char [100] ( я хочу записать в файл содержимое Label1->Caption в файл).
Отправлен: 06.04.2007, 23:13
Вопрос задал: Win2k (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, Win2k!
1. TIniFile класс работы с ini файлами
TRegistry класс работы с реестром
примеры
http://netcode.ru/cpp/?katID=2&skatID=17&artID=89
http://netcode.ru/cpp/?lang=&katID=2&skatID=17&artID=91
2. используя метод класса c_str()
пример
http://www.codenet.ru/progr/bcb/ansistring.php
Ответ отправил: ramok (статус: Специалист)
Ответ отправлен: 07.04.2007, 01:30 Оценка за ответ: 5 Комментарий оценки: Большое Вам спасибо!
Отвечает: Unreal2004
Здравствуйте, Win2k!
Здравствуйте, Win2k!
TIniFile - для работы с INI файлами. В хелре есть полный пример работы сэтим классом
TRegistry - для работы с реестром. в хелпе есть полный пример
У AnsiString есть оператор c_str(), который возвращает указатель на строку с нулем на конце.
получается что то типа
fwrite(Label1->Caption.c_str(),Label1->Caption.Lenght(),1,file);
У AnsiString есть много методов, посмотри в хелпе.
Удачной охоты :-)
Ответ отправил: Unreal2004 (статус: 2-ой класс)
Ответ отправлен: 07.04.2007, 08:28 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Отвечает: Lomer
Здравствуйте, Win2k!
Основные функции для работы с реестром:
(Информация общая для всех пользователей должна заноситься в ключ вида:
HKEY_LOCAL_MACHINESoftwareMyCompanyMyProduct1.0
Информация специфичная для пользователя должна заноситься в ключ вида:
HKEY_CURRENT_USERSoftwareMyCompanyMyProduct1.0...)
*.ini файл - обычный текстовый файл, поэтому работайте с ним функциями:
CreateFile
ReadFile
WriteFile
Также в stdio.h есть функции
fopen
fgets
fputs
Ansistring переводится в обычную строку так: Label1->Caption.c_str();
Ответ отправил: Lomer (статус: 3-ий класс)
Ответ отправлен: 07.04.2007, 20:59 Оценка за ответ: 4 Комментарий оценки: Cпасибо. Хотелось бы поподробней узнать, чем отличается, например, RegOpenKey и RegOpenKeyEx и.т.д. (т.е. нужно было дать описание каждой функции).
AnsiString S;
S.c_ctr(); возвращает указатель на на строку
для вашего вопроса
Label1->Caption->c_str();
Или у меня на сайте есть статья http://bcb-program.narod.ru/Page2.html
Ответ отправил: Olegzp (статус: 1-ый класс)
Ответ отправлен: 09.04.2007, 13:41 Оценка за ответ: 5 Комментарий оценки: Спасибо за помощь!
Вопрос № 81.445
Всем доброго времени суток!
Вот приспичило мне написать программу перехвата для одной проги(типа r_admin, короче управление компьютерным клубом), суть такова что мне нужно знать что за пакеты она шлет, притом в этих пакетах точно содержится текстовая информация и скриншоты экрана но в неизвестной мне последовательности и т.д.
короче мне нужно написать перехватчик, чтобы он писал логи а потом их разгребать!
и еще: как перехватить api функцию вызванную из этой программы (снятие скриншотов) просто на клиенте необходимо знать когда происходит снятие скринов
Заранее спасибо!
Отправлен: 07.04.2007, 15:06
Вопрос задал: Nooki (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Решетник Д
Здравствуйте, Nooki!
Первым делом стоило обратиться к поисковикам...
Для перехвата АПИ вызовов можно почитать статьи с rsdn.ru (
http://rsdn.ru/article/baseserv/IntercetionAPI.xml
http://rsdn.ru/article/baseserv/apicallsintercepting.xml
и т.д. и т.п.
Для начала стоит попробовать написать сниффер. Это сделать намного легче, чем звучит... опять же пользуйтесь поиском на данную тематику - там и примеры...
Получаете данные, перехваченные этим сниффером и можете сами анализировать.
Кстати, можно попробовать проанализировать поток данных путем поиска заголовка графического файла....
В общем, вариантов много.... желаю удачи в "исследовании"...
--------- Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: Студент)
Ответ отправлен: 08.04.2007, 00:27