Суббота, 27 Апреля 2024, 12:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » scripto [16]
Результаты поиска
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.Почему?несмотря на то.что файл выбран

Форум игроделов » Записи участника » scripto [16]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг