Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2012, 01:56   #1
studprog
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 10
По умолчанию Проблема с С++ .NET

Здравствуйте. Вот решил изучить NET, учу по книге "C++ .NET для чайников". Год издания-2002(предполагаю, что это основная причина проблемы). В книге приведен пример программы, которая должна впринципе работать. Но мой отладчик ругается. У меня стоит Visual Studio 2010. Покапавшись в хронографии версий NET, я заметил, что версии 2008-2010 и предыдущии версии отличаются. Возможно в этом и заключается причина неработы этой программы.Но это лишь мое предположение. Лучше взгляните сами на код и помогите найти и решить проблему. Так как ошибок много и они все однотипные я напишу лишь часть кода:
Код:
#include "stdafx.h"

#using<mscorlib.dll>
#using<System.Windows.Forms.dll>
#using<System.dll>
#using<System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
а вот строка с ошибкой:
Код:
void DrawPoint(Graphics *poGraphics, PointList *poPoint)
(Описание функции)
Ошибка:

Код:
Error	1	error C3699: '*' : cannot use this indirection on type 'System::Drawing::Graphics'	C:\Documents and Settings\Yura\мои документы\visual studio 2010\Projects\lLinne\lLinne\lLinne.cpp	34	1	lLinne
Как заставить эту прогу работать?
studprog вне форума Ответить с цитированием
Старый 15.09.2012, 06:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Открыть учебник и узнать, что в в управляемом коде есть Graphics ^, но нет Graphics *
p51x вне форума Ответить с цитированием
Старый 15.09.2012, 19:09   #3
studprog
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 10
По умолчанию

Спасибо, количество ошибок поубавилось, но все же еще остались. Я конечно мог бы почитать книжки, но тогда программа нескоро начнет работать. Помогите мне еще, пожалуйста:
Код:
Pen ^poPen=Pen(Color::Red);
Код:
Error	1	error C2440: 'initializing' : cannot convert from 'System::Drawing::Pen' to 'System::Drawing::Pen ^'	C:\Documents and Settings\Yura\мои документы\visual studio 2010\Projects\lLinne\lLinne\lLinne.cpp	40	1	lLinne
Потом в этом месте:

Код:
Error	2	error C2065: 'fFinished' : undeclared identifier	C:\Documents and Settings\Yura\мои документы\visual studio 2010\Projects\lLinne\lLinne\lLinne.cpp	66	1	lLinne
на какую функцию нужно заменить fFinished

Код:
poForm->Show;
Код:
Error	4	error C3867: 'System::Windows::Forms::Form::Show': function call missing argument list; use '&System::Windows::Forms::Form::Show' to create a pointer to member	C:\Documents and Settings\Yura\мои документы\visual studio 2010\Projects\lLinne\lLinne\lLinne.cpp	97	1	lLinne
Вот..., как здесь решить ошибку? И еще одна, последняя:

Код:
poGraphics->Dispose();
Код:
Error	5	error C2039: 'Dispose' : is not a member of 'System::Drawing::Graphics'	C:\Documents and Settings\Yura\мои документы\visual studio 2010\Projects\lLinne\lLinne\lLinne.cpp	109	1	lLinne
И здесь на что нужно поменять Dispose

Я не ленюсь заглянуть в книжку, просто не хочу затягивать с этой прогой.
studprog вне форума Ответить с цитированием
Старый 15.09.2012, 20:20   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Цитата:
cannot convert from 'System::Drawing::Pen' to 'System::Drawing::Pen ^'
Книги читать не хотите, ладно... но читайте, что вам компилятор пишет.

Цитата:
на какую функцию нужно заменить fFinished
А фиг его знает. Мои телепатические способности на выходных.

Цитата:
error C3867: 'System::Windows::Forms::Form::Show ': function call missing argument list;
Повторюсь - читайте, что пишет компилятор. Очевидно, что функция ждет, например, бул.
p51x вне форума Ответить с цитированием
Старый 15.09.2012, 20:20   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

--------------------------------------------------------
p51x вне форума Ответить с цитированием
Старый 15.09.2012, 21:26   #6
studprog
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 10
Восклицание

А что вы решили за меня? Извините за нескромный вопрос, я же не просил вас написать мне программу, я конкретно задал вопрос. Еще раз повторяю: программа не работает из-за несоответствии версий примера программы взятого из книги и моего компилятора. И мне нужно наладить это расхождение версий. Поэтому я и спрашиваю какую функцию используют в последних версиях вместо устаревшей fFinished. Также и dispose: на что нужно заменить. Если вы не знаете, то просто скажите: "Я не знаю-нужно копаться в книжках". Я хочу сэкономить время, спросив у знающего человека.
studprog вне форума Ответить с цитированием
Старый 15.09.2012, 22:06   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

А вы научитесь отличать подпись от поста, а?

dispose - есть у класса, почему не видет надо смотреть код
fFinished - опять же, что за функция? что делает? чья?
p51x вне форума Ответить с цитированием
Старый 16.09.2012, 01:07   #8
studprog
Пользователь
 
Регистрация: 15.09.2012
Сообщений: 10
По умолчанию

Даа, я уже заметил по другим темам, но все равно бесит)
fFinished..хм, хороший вопрос чья? хотя я наврал, это переменная, но похоже ничья. По логики программы она используется только в цикле, чтобы его закончить. Но нигде в примере не объявлена, теперь я засомневался в правильности этой проги.
Ладно последнее усилие.Вот код:
Код:
#include "stdafx.h"

#using<mscorlib.dll>
#using<System.Windows.Forms.dll>
#using<System.dll>
#using<System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;

//Создание класса, явл. элементом связанного списка
class PointList
{
public:
		int nX;
		int nY;
		PointList *poNext;
};
//Получение координат новой точки
void NewPoint(PointList *poNew)
{
	//Чтение координат X и Y
	Console::WriteLine(L"Введите координат X");
	poNew->nX=Int32::Parse(Console::ReadLine());
	Console::WriteLine(L"Введите коорданту Y");
	poNew->nY=Int32::Parse(Console::ReadLine());
	//Присвоение указателю нулевого значения
	poNew->poNext=0;
}
//Отображение точек на экране
void DrawPoint(Graphics ^poGraphics, PointList *poPoint)
{
	//Есть ли точки для отображения?
	if(poPoint->poNext)
	{
		//Создание пера для рисования
		Pen ^poPen=Pen(Color::Red);
		//Рисование линии от текущей точки к следующей
		poGraphics->DrawLine(poPen, poPoint->nX, poPoint->nY,
						poPoint->poNext->nX,poPoint->poNext->nY);
	};
}
//С этой точки начинается выполнение программы
#ifdef _UNICODE
int wmain(void)
#else
int main(void)
#endif
{	bool fFinished=false;
	//Указатель для первого элемента списка
	PointList *poPoints=0;
	//Указатель для последнего созданного элемента
	PointList *poLast;
	//Указатель для нового элемента списка
	PointList *poNew;
	//Указатель для принятия ответа от пользователя 
	String ^pszMore;

	//Структуры для отбражения графики
	Form ^poForm=gcnew Form;
	Graphics ^poGraphics=poForm->CreateGraphics();

	while(!fFinished)
	{
		//Выделение памяти для нового элемента
		poNew=new PointList;
		if(!poPoints)
		{
			//Если это первый элемент, присвоение его
			//адреса указателю poPoints
			poPoints=poNew;
		}
		else
		{
			//Присоединение элемента в конец списка
			poLast->poNext=poNew;
		}
		//Обновлениезначенияуказателя poLast
		poLast=poNew;
		//Принятия от пользователя координат новой точки
		NewPoint(poNew);
		//Хочет ли пользователь ввести координат новой точки
		NewPoint(poNew);
		//Хочет ли пользователь ввести координаты для
		//следующей точки?
		Console::WriteLine("Нажмите Y для определения следующей точки");
		pszMore=Console::ReadLine();
		if(!pszMore->Equals(L"y"))
		{
			fFinished=true;
		}
	}
	//Отображение окна для рисования
	poForm->Show;
	//Отображение точек на экране
	poLast=poPoints;
	while(poLast)
	{
		//Отображение линий
		DrawPoint(poGraphics, poLast);
		//Переход к следующему элементу
		poLast=poLast->poNext;
	}
	//Освобождение памяти, которая использовалась для
	//отображения графики на экране
	poGraphics->Dispose();
	//Освобождение памяти, занятой элементами списка
	poLast=poPoints;
	while(poLast)
	{
		PointList *poNext;
		poNext=poLast->poNext;
		
		//Освобождение памяти
		delete poLast;
		//Переход к следующему элементу
		poLast=poNext;
	}
	//Ожидание, пока пользователь не закроет окно формы
	Application::Run(poForm);
}
Можете, пожалуйста, сказать почему dispose так невиден. И что с остальными ошибками делать, сам не смог их исправить.
studprog вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с переносом из .net на Delphi Wanderer1977 Общие вопросы Delphi 16 06.07.2012 07:14
Проблема c Microsoft.NET Framework antonio69 Помощь студентам 3 09.08.2011 06:48
Удаленный SQL-сервер Ado.Net + .Net remoting + Asp .Net gammaray Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 22.11.2010 17:36
Проблема с использованием Net Use Rovert Операционные системы общие вопросы 2 21.07.2010 07:39