Результаты поиска
| |
scripto | Дата: Суббота, 04 Июня 2011, 10:45 | Сообщение # 1 | Тема: массив в builder c== 2010 |
был не раз
Сейчас нет на сайте
| Здравствуйте!Можно ли в builder c++ 2010 посмотреть значения всех элементов динамически созданного массива,не вбивая необходимые элементы в watches?
|
|
| |
scripto | Дата: Вторник, 19 Апреля 2011, 08:09 | Сообщение # 2 | Тема: Как найти ошибку?(builder 6 c++) |
был не раз
Сейчас нет на сайте
| Привет,всем.Помогите отловить на какой срочке и из-за чего вылетает ошибка "...raised exception class "Invalid pointer operation".Программу прилагаю с примером в архиве. Программка
|
|
| |
scripto | Дата: Воскресенье, 10 Апреля 2011, 11:19 | Сообщение # 3 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| Спасибо.А так,по учебе нужно написать прогу с графом, уже писал подобное на builder,на winapi,на с# ,а тут возникли непредвиденные проблемы как видишь.Еще раз спасибо.Думаю,что дальше разберусь.Может порекомендуешь какую-нибудь литиратуру по clr с c++?
|
|
| |
scripto | Дата: Суббота, 09 Апреля 2011, 01:05 | Сообщение # 4 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| Я попробовал как ты и сказал-выдает ошибку: Code Ошибка 2 error LNK2028: ссылка на неразрешенную лексему (0A00000A) "void __clrcall draw_top(int &,cli::array<class System::Drawing::Point >^)" (?draw_top@@$$FYMXAAHP$01AVPoint@Drawing@System@@@Z) в функции "private: void __clrcall graph_inwindowsform::Form1::Form1_MouseDown(class System::Object ^,class System::Windows::Forms::MouseEventArgs ^)" (?Form1_MouseDown@Form1@graph_inwindowsform@@$$FA$AAMXP$AAVObject@System@@P$AAVMouseEventArgs@Forms@Windows@4@@Z) graph_in windowsform.obj Не посмотришь ли программу?она по сути пустая,вот с этим бы разобраться.И спасибо за совет-учту! http://yemsalat.org/go/upload.php Добавлено (09.04.2011, 01:05) ---------------------------------------------
Quote Как со стеной разговариваю... http://tinyurl.com/6jg4oja Буквально в первых ссылках и описание проблемы и решение. Не срабатывает!Пробую-все ругается и ругается компилятор
|
|
| |
scripto | Дата: Пятница, 08 Апреля 2011, 00:59 | Сообщение # 5 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| попробую отпишусь Добавлено (08.04.2011, 00:59) --------------------------------------------- Не огли бы поподробнее об этом,попробовал так Code #pragma once #include "Graphic.h" using namespace System::Drawing;
ref class GlobalObjects { public: static array<System::Drawing::Point> ^points; };
#define nmax = 1000;
int n = 0; //количество вершин
namespace graph_inwindowsform {
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;
/// <summary> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае, /// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: добавьте код конструктора // }
protected: /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::RadioButton^ radioButton1; protected: private: System::Windows::Forms::RadioButton^ radioButton2; private: /// <summary> /// Требуется переменная конструктора. /// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent(void) { this->radioButton1 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton2 = (gcnew System::Windows::Forms::RadioButton()); this->SuspendLayout(); // // radioButton1 // this->radioButton1->AutoSize = true; this->radioButton1->Checked = true; this->radioButton1->Location = System::Drawing::Point(747, 95); this->radioButton1->Name = L"radioButton1"; this->radioButton1->Size = System::Drawing::Size(85, 17); this->radioButton1->TabIndex = 0; this->radioButton1->TabStop = true; this->radioButton1->Text = L"radioButton1"; this->radioButton1->UseVisualStyleBackColor = true; // // radioButton2 // this->radioButton2->AutoSize = true; this->radioButton2->Location = System::Drawing::Point(747, 141); this->radioButton2->Name = L"radioButton2"; this->radioButton2->Size = System::Drawing::Size(85, 17); this->radioButton2->TabIndex = 1; this->radioButton2->Text = L"radioButton2"; this->radioButton2->UseVisualStyleBackColor = true; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(892, 466); this->Controls->Add(this->radioButton2); this->Controls->Add(this->radioButton1); this->Name = L"Form1"; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; this->Text = L"Лабораторная работа №6 Работа с графом с помощью WindowsForms"; this->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseDown); this->ResumeLayout(false); this->PerformLayout();
} #pragma endregion
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics ^g = this->CreateGraphics(); Point P = e->Location; points = gcnew array<Point>(100500); //нарисовать вершины if(this->radioButton1->Checked) { draw_top(n, points); } // graphic.draw_top(ref n, point, P, g); } }; }
Но выдает ошибку: 1>d:\documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Form1.h(125) : error C2065: points: необъявленный идентификатор 1>d:\documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Form1.h(130) : error C2065: points: необъявленный идентификатор
|
|
| |
scripto | Дата: Четверг, 07 Апреля 2011, 22:06 | Сообщение # 6 | Тема: Как объявить инициализировать глобальный массив Point в clr? |
был не раз
Сейчас нет на сайте
| Привет всем.Нужно объявить глобальный массив,и в другом месте создавать его динамически.Приложение типа windowsForm Application(visual studio 2008 c++).пробовал так: Code #pragma once #include "Graphic.h"
#define nmax = 1000; array<Point>^ points; int n = 0; //количество вершин
namespace graph_inwindowsform {
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;
/// <summary> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае, /// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: добавьте код конструктора // points = gcnew array<Point>(1000); }
protected: /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::RadioButton^ radioButton1; protected: private: System::Windows::Forms::RadioButton^ radioButton2; private: /// <summary> /// Требуется переменная конструктора. /// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent(void) { this->radioButton1 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton2 = (gcnew System::Windows::Forms::RadioButton()); this->SuspendLayout(); // // radioButton1 // this->radioButton1->AutoSize = true; this->radioButton1->Checked = true; this->radioButton1->Location = System::Drawing::Point(747, 95); this->radioButton1->Name = L"radioButton1"; this->radioButton1->Size = System::Drawing::Size(85, 17); this->radioButton1->TabIndex = 0; this->radioButton1->TabStop = true; this->radioButton1->Text = L"radioButton1"; this->radioButton1->UseVisualStyleBackColor = true; // // radioButton2 // this->radioButton2->AutoSize = true; this->radioButton2->Location = System::Drawing::Point(747, 141); this->radioButton2->Name = L"radioButton2"; this->radioButton2->Size = System::Drawing::Size(85, 17); this->radioButton2->TabIndex = 1; this->radioButton2->Text = L"radioButton2"; this->radioButton2->UseVisualStyleBackColor = true; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(892, 466); this->Controls->Add(this->radioButton2); this->Controls->Add(this->radioButton1); this->Name = L"Form1"; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; this->Text = L"Лабораторная работа №6 Работа с графом с помощью WindowsForms"; this->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseDown); this->ResumeLayout(false); this->PerformLayout();
} #pragma endregion
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics ^g = this->CreateGraphics(); Point P = e->Location; //нарисовать вершины if(this->radioButton1->Checked) { draw_top(n, points); } // graphic.draw_top(ref n, point, P, g); } }; }
но выдает следующую ошибку: 1>------ Построение начато: проект: graph_in windowsform, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>graph_in windowsform.cpp 1>d:\documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Form1.h(7) : error C3145: points: глобальная или статическая переменная не может быть управляемого типа "cli::array<Type> ^" 1> with 1> [ 1> Type=System::Drawing::Point 1> ] 1> может не объявлять глобальную или статичную переменную или элемент собственного типа, который относится к объекту в куче сборщика мусора 1>Журнал построения был сохранен в "file://d:\Documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Debug\BuildLog.htm" 1>graph_in windowsform - ошибок 1, предупреждений 0 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== [/code] Пробовал и вариант как c Point *points таким образом: Code #pragma once #include "Graphic.h" using namespace System::Drawing;
#define nmax = 1000; Point *points; int n = 0; //количество вершин
namespace graph_inwindowsform {
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;
/// <summary> /// Сводка для Form1 /// /// Внимание! При изменении имени этого класса необходимо также изменить /// свойство имени файла ресурсов ("Resource File Name") для средства компиляции управляемого ресурса, /// связанного со всеми файлами с расширением .resx, от которых зависит данный класс. В противном случае, /// конструкторы не смогут правильно работать с локализованными /// ресурсами, сопоставленными данной форме. /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: добавьте код конструктора // }
protected: /// <summary> /// Освободить все используемые ресурсы. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::RadioButton^ radioButton1; protected: private: System::Windows::Forms::RadioButton^ radioButton2; private: /// <summary> /// Требуется переменная конструктора. /// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code /// <summary> /// Обязательный метод для поддержки конструктора - не изменяйте /// содержимое данного метода при помощи редактора кода. /// </summary> void InitializeComponent(void) { this->radioButton1 = (gcnew System::Windows::Forms::RadioButton()); this->radioButton2 = (gcnew System::Windows::Forms::RadioButton()); this->SuspendLayout(); // // radioButton1 // this->radioButton1->AutoSize = true; this->radioButton1->Checked = true; this->radioButton1->Location = System::Drawing::Point(747, 95); this->radioButton1->Name = L"radioButton1"; this->radioButton1->Size = System::Drawing::Size(85, 17); this->radioButton1->TabIndex = 0; this->radioButton1->TabStop = true; this->radioButton1->Text = L"radioButton1"; this->radioButton1->UseVisualStyleBackColor = true; // // radioButton2 // this->radioButton2->AutoSize = true; this->radioButton2->Location = System::Drawing::Point(747, 141); this->radioButton2->Name = L"radioButton2"; this->radioButton2->Size = System::Drawing::Size(85, 17); this->radioButton2->TabIndex = 1; this->radioButton2->Text = L"radioButton2"; this->radioButton2->UseVisualStyleBackColor = true; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(892, 466); this->Controls->Add(this->radioButton2); this->Controls->Add(this->radioButton1); this->Name = L"Form1"; this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen; this->Text = L"Лабораторная работа №6 Работа с графом с помощью WindowsForms"; this->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::Form1_MouseDown); this->ResumeLayout(false); this->PerformLayout();
} #pragma endregion
private: System::Void Form1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) { Graphics ^g = this->CreateGraphics(); Point P = e->Location; //нарисовать вершины if(this->radioButton1->Checked) { draw_top(n, points); } // graphic.draw_top(ref n, point, P, g); } }; }
Еще не создаю динамически,а уже ругается.Такая же ошибка.Нужно бы создать динамически,глобальный массив в Form1.h
|
|
| |
scripto | Дата: Суббота, 02 Апреля 2011, 22:32 | Сообщение # 7 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| То есть я никак не смогу воспользоваться данными записанными в массив points,создфнные через array из другого файла?
|
|
| |
scripto | Дата: Суббота, 02 Апреля 2011, 22:08 | Сообщение # 8 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| То есть можно объявить array<Point> ^points; а в другом месте инициализировать: points = = gcnew array<Point>(100500);? И где обявить в Form1.h глобальную такую переменную после этого Code #pragma once
namespace graph_inwindowsform {
using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing;
|
|
| |
scripto | Дата: Суббота, 02 Апреля 2011, 21:28 | Сообщение # 9 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| Да,приложение типа WindowsFormApplication. Quote void draw_top(int &n, array<Point> ^point) На это не ругается. пробовал и так: Code void draw_top(int &n, Point *points); Как вызывать эти функции? И в файле Form1.h где объявить глобальный массив?Хотелось бы что-то типа Point *p; а создавать динамически массив в другом месте Добавлено (02.04.2011, 21:28) --------------------------------------------- Предложите вариант?необязательно именно Point.В Builder писал void __fastcall TForm1::Image1Click(TObject *Sender) { //раставить вершины if(RadioButton1->Checked) draw_top(n, point); ... а функции объявлялась в другом файле как void draw_top(int &n, POINT point[]) А тут как лучше?
|
|
| |
scripto | Дата: Суббота, 02 Апреля 2011, 21:02 | Сообщение # 10 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| 1>d:\documents\etudes\6семестр\сппо\lab\lab6_graph\graph_in windowsform\Graphic.h(9) : error C2728: System::Drawing::Point: собственный массив не может содержать этот управляемый тип 1> Вы имели в виду "array<System::Drawing::Point>"? В c# с такими проблемами не сталкивался,в winapi тоже.А тут не поиму,что не так.Это и есть весь код.Пусть заработает просто это,тело функции потом будет.Суть то не в этом Добавлено (02.04.2011, 21:02) --------------------------------------------- Нужно бы в файле Form1.h.и что-то типа: Point *p; а создавать массив динамически в друом месте.Где Point встроенная структура(не POINT от МFC!!!!)
|
|
| |
scripto | Дата: Суббота, 02 Апреля 2011, 20:48 | Сообщение # 11 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| Вы вообще знаете как передается массив?Если не разбираетесь,то не давайте пожалуйста безответственных комментариев.
|
|
| |
scripto | Дата: Суббота, 02 Апреля 2011, 12:16 | Сообщение # 12 | Тема: Массив Point в WindowsForm |
был не раз
Сейчас нет на сайте
| Привет всем.Подскажите пожалуйста как в проекте WindowsForm в заголовочном файле объявить один из параметров как массив Point. Пробовал так #include "stdafx.h" #include "Form1.h" using namespace System::Drawing; //расставить вершины void draw_top(int &n, Point point[]); Но компилятор ругается.Что нужно подключить? И вообще как создать глобальный массив Point и где?
|
|
| |
scripto | Дата: Понедельник, 28 Марта 2011, 11:51 | Сообщение # 13 | Тема: Дайте, пожалуйста, совет по графике |
был не раз
Сейчас нет на сайте
| Привет. У меня 3х-мерная сцена, состаящая из параллелепипеда,пирамиды и усеченной пирамиды.Сцену нужно описать полигональной сеткой.Никаких графических библиотек типа openGl использовать нельзя. Так вот как лучше мне их задать? -каждый объект отдельно(создать класс для каждого объекта)? -как 1 список многоугольников ? Описание сцены нужно хранить в файле,можно там еще хранить и какие-то описания объекта,например цвет
|
|
| |
scripto | Дата: Суббота, 18 Декабря 2010, 22:39 | Сообщение # 14 | Тема: Проблема с типами в VC++ 2008 |
был не раз
Сейчас нет на сайте
| я сделал следующим образом if(GetOpenFileName(&ofn)) return 1; else return 0; а спомощью твоего варианта просто сначала проверил значение этой функции и наконец получил 1.Возникает такой вопрос.В свойствах проекта включено юникод.И потому код OPENFILENAME ofn; char szFilters[80]="Двоичные файлы\0*.dat\0 Все файлы\0 *.*\0"; char szFileTitle[15]; FileName[0]='\0'; memset(&ofn,0,sizeof(OPENFILENAME)); ofn.lStructSize=sizeof(OPENFILENAME); ofn.hwndOwner=hWnd; ofn.lpstrFilter=szFilters; ofn.nFilterIndex=1; ofn.lpstrFile=FileName; ofn.nMaxFile=(int)sizeof(FileName); ofn.lpstrFileTitle=szFileTitle; ofn.nMaxFileTitle=sizeof(szFileTitle); if(GetOpenFileName(&ofn)) return 1; else return 0; выдает у меня ошибку невозможно преобразовать 'char [80]' в 'LPCWSTR' и также для других char/Но мне говорят ,что срабатывает у других несмотря на юникод.Чем это может быть вызвано у меня?
|
|
| |
scripto | Дата: Суббота, 18 Декабря 2010, 22:25 | Сообщение # 15 | Тема: Проблема с типами в VC++ 2008 |
был не раз
Сейчас нет на сайте
| Я нашел ошибку.Но спасибо большое за отклик.Ошибка была до функции,а именно было extern TCHAR FileName[]; исправил на extern TCHAR FileName[100]; и все заработало
|
|
| |
scripto | Дата: Суббота, 18 Декабря 2010, 21:51 | Сообщение # 16 | Тема: Проблема с типами в VC++ 2008 |
был не раз
Сейчас нет на сайте
| Помогите пожалуйста. имеется функция int GetFileName(HWND hWnd) { OPENFILENAME ofn; TCHAR szFilter[80] = L"TextFiles\0 *.txt\0"; TCHAR szFileTitle[80]; FileName[0] = '\0'; szFileTitle[0] = '\0'; memset(&ofn,0,sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hWnd; ofn.lpstrFilter = szFilter; ofn.nFilterIndex = 1; ofn.lpstrFile = FileName; ofn.nMaxFile = sizeof(FileName); ofn.lpstrFileTitle = szFileTitle; ofn.nMaxFileTitle = sizeof(szFileTitle); int a = GetOpenFileName(&ofn); if(GetOpenFileName(&ofn)) return 1; else return 0; } она все время возвращает 0.Почему?несмотря на то.что файл выбран
|
|
| |
|