С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/47: Рейтинг темы: голосов - 47, средняя оценка - 4.77
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100

Как задать структуру?

20.01.2015, 08:31. Показов 9776. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня всем, подскажите пожалуйста по структурам:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "math.h" 
 
using namespace std;
 
struct date_p{
    float p1;
    float p2;
    float p3;
    float p4;
    float p5;
    float px;
    float py;
};
 
int main(){
date_p mos_P[6]; 
}
тут всё понятно как создали в консольном приложении, а вот когда подключаемся к формам, скажем мне нужно что бы к моему массиву я мог обращаться глобально нажимая на кнопки производил с ним действия. Как его задать уже в приложении, когда применяю формы.
А так же скажем когда использую несколько форм. Раньше писал в delphi в с++ немного всё иначе....
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2015, 08:31
Ответы с готовыми решениями:

Как правильно задать структуру
Как в "trade tovar1" правильно задать значения с массивов? #include <iostream> #include <ctime> //содержит time #include...

Как задать псевдоним для указателя на структуру
Подскажите. пожалуйста, можно как нибудь задать псевдоним для указателя на структуру Т.е. я пытался сделать что то вроде такого ...

Как создать структуру-список, поля которой — ссылка на такую же структуру
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же структуру) и ссылка на объект, относящийся...

12
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.01.2015, 08:45
Приложение с формами какое? WinAPI или ещё что-то?
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
20.01.2015, 09:05  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Приложение с формами какое? WinAPI или ещё что-то?
А это тут причём, пардон за скромный вопрос?=)
В delphi просто пишешь в глобальных переменных
Delphi
1
2
3
4
5
type KK=record 
begin
 x1:byte;
 x2:byte;
end;
после в
Delphi
1
var mos:array[1..10] of KK;
как такой трюк в C++ выполнить скажем есть форма,

C++
1
2
3
4
5
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
- это уже конец, выше создаются кнопки и все элементы, а дальше идёт непосредственно тело где выполняются действия при обращении к кнопкам и и элементам.... Так вот куда пихнуть сборку struct.... Может я не ясно изъясняюсь, виноват - недавно стал осваивать C++ Microsoft Visual....
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
20.01.2015, 10:06
war321, в С++ есть ключевое слово extern, которое позволяет декларировать переменную, определённую где-то ещё, в другой единице трансляции. Так же можно декларировать переменные и внутри функции/метода. Если Вы определите одну глобальную переменную, скажем в main.cpp:
C++
1
int my_global_var;
, то в других единицах Вы можете её декларировать:
C++
1
extern int my_global_var;
.

Лично я никогда не работал с глобальными переменными и не представляю себе насколько это сложно. Однако очевидны потенциальные опасности: сильная зависимость кода, сильная связь разных единиц трансляции с данной переменной, что делает код слабо пригодным к переиспользованию; опасность случайных конфликтов имён переменных, хотя решаема с помощью пространств имён; возможные ошибки множественного определения глобальной переменной, если программа собирается из большого количества файлов/библиотек (просто сложно уследить).

Я советую Вам посмотреть в сторону хотя бы каких-то аналогов MVC. Пусть данные, которые программа получает от пользователя, попадают не в программную модель, а в контроллер, который, в свою очередь, будет генерировать асинхронное для модели сообщение, помещаемое в очередь. При минимальных усилиях такой подход позволит Вам не работать с глобальной переменной и избавит от опасности "зависания" UI при обработке моделью сообщений.
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
20.01.2015, 10:15  [ТС]
mporro,
Спасибо за ответ, в delphi сталкивался с такой же проблемой...
Но скажем вот процесс обработки нажатия кнопки:
C++
1
2
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
         }
скажем как в локальной области кнопки создать свою структуру..... есть ли в С++ такая возможность? При этом на глобальный уровень не будем выходить, а только в области исполнения этого кода....
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.01.2015, 10:52
Цитата Сообщение от war321 Посмотреть сообщение
А это тут причём
А Delphi при чём? Если приложение без классов, то ничем от консольного не отличается, сверху объяви свой массив и он будет глобальным. Если с классами, то в классе главной формы опиши, чтобы обработчики видели.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
20.01.2015, 11:00
war321, Вы можете определить структуру внутри своего класса -- вложенный класс. А внутри функции/метода, насколько мне известно, -- нет. Может кто ещё подойдёт пояснит.
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
22.01.2015, 07:27  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
 
namespace My9 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    
    // Сюда вложил класс
            struct tttt{
                int z1;   
                   };
    /// <summary>
    /// Сводка для Form1
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
спасибо получилось создать - вот кусок кода, где определил класс=) теперь работает......

Но теперь столкнулся со следующей проблемой,
Обрисую задачу товарищи, есть строка:
C++
1
String^ s1;
в неё загружается текст, который построчно берётся из файла....
Ладно вид текста таков примерно:
s1="dates::2.55454545,125.215464121,115. 0015181,156545.12,121561.1111";
пытаюсь разобрать теперь эту строку и выдернуть из неё числа и поместить скажем в переменные:
C++
1
float f1,f2,f3,f4,f5;
но вот проблема в том, что места знаков "," нашёл, а дальше со строками встал - думал перевести в char, начал думать - но доходит, что это геморой ещё тут, перегонят туда сюда.... Подскажите, может у кого есть статейка по string строкам как их разбирать.... Посмотрел, что да же вариант такой:
C++
1
for(int i=0;i<=n;i++)if(s1[i]=="x")
не канает, вот и думаю - почему, ведь string это тот же самый массив, что и char в другой таблице просто - но обращаться как к массиву не могу.
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
22.01.2015, 10:26
Split() у String смотри. Разделяет строку на части по заданным разделителям.
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
22.01.2015, 12:04  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// regex_split.cpp
// compile with: /clr
using namespace System;
 
int main()
{
   String^ delimStr = " ,.:\t";
   Console::WriteLine( "delimiter : '{0}'", delimStr );
   array<Char>^ delimiter = delimStr->ToCharArray( );
   array<String^>^ words;
   String^ line = "one\ttwo three:four,five six seven";
 
   Console::WriteLine( "text : '{0}'", line );
   words = line->Split( delimiter );
   Console::WriteLine( "Number of Words : {0}", words->Length );
   for (int word=0; word<words->Length; word++)
      Console::WriteLine( "{0}", words[word] );
 
   return 0;
}
всё нашёл ! - спасибо большое, заработало) да же проще, чем в delphi)
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
10.02.2015, 08:10  [ТС]
И вновь взываю к вам товарищи) опять проблема возникла, но уже с компонентами:
chart компонент - в среде c++ 2010 сразу скажу, что лицензии нет - пробная, поэтому не могу под вещать другие компоненты....
так вот, проблема встала с отображением
Series -> Candlestick
добавляю область как положено, описание таково добавления новой скажем точки:
series.Points.AddXY(xvalue, bottomY, topY, bottomOfCandle, topOfCandle) - на С#
тут в принципе понятно, но вот когда по имеющимся данным строю, получается изогнутая мелко кривая:



 Комментарий модератора 
Картинки и любые другие файлы загружайте на форум, во избежание их удаления или потери на сторонних ресурсах.

такое чувство складывается, что масштаб остаётся постоянным....

Добавлено через 1 минуту
где копать подскажите.... данные я сам получаю из файла, не подключаю источник данных, так как их нужно перерабатывать....
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
16.02.2015, 10:26  [ТС]
Всё разобрался товарищи - масштаб, так что поборол графики)
Но вот вновь вопрос: вот кусочек где задаю глобальную переменную:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
 
    struct Date_bar{
                   float open;  
                   float max;
                   float min;
                   float close;
                   float volume;
                   };
    
    Date_bar mos_bar[500];
    int N_bar;
    /// <summary>
    /// Сводка для Form1
переменная int N_bar; но почему то ругается при компиляции когда выполняю в коде действия N_bar++;
C++
1
2
3
4
1>  11.cpp
1>Form1.h(275): error C2440: =: невозможно преобразовать "int" в "System::Windows::Forms::DataGridViewTextBoxColumn ^"
1>          Оператор определенного пользователем преобразования недоступен, или
1>          Не существует стандартного преобразования упакованной формы арифметического типа в конечный тип
чушь какая то, глобальная переменная из структуры действует, а вот переменная типа int встала.... в чём может быть причина?

Добавлено через 2 часа 10 минут
Всё товарищи разобрался, конечно немного иначе - но справился с проблемой... Снимаю вопрос
0
3 / 3 / 1
Регистрация: 20.01.2015
Сообщений: 100
05.03.2015, 08:47  [ТС]
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Товарищи, вновь прошу вашей помощи:
использую chart компонент, пытаюсь что бы для каждой точки был свой цвет:
C++
1
2
chart1->Series[0]->Color = Color.Red;
chart1->Series[0]->Points->AddXY(i,(mos_bar[i].open-mm),(mos_bar[i].max-mm),(mos_bar[i].min-mm),(mos_bar[i].close-mm));
через цикл строю, именно тут задаю цвет постоянный но как я понял принцип такой:
1) делаю шаг по циклу
2) задаю цвет
3) вывожу данные
и повторяю до Nго элемента, так вот на форумах полазил именно таким методом задают:
но выдаёт ошибку:
C++
1
2
3
4
 c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.drawing.dll: см. объявление "System::Drawing::Color"
Form1.h(836): error C2275: System::Drawing::Color: недопустимое использование этого типа в качестве выражения
1>          c:\program files\reference assemblies\microsoft\framework\.netframework\v4.0\system.drawing.dll: см. объявление "System::Drawing::Color"
Form1.h(836): error C2228: выражение слева от ".Red" должно представлять класс, структуру или объединение
что может быть? почему не понимает класс - или в нужно через пространство имён задавать?

всё товарищи осилил
C++
1
chart1->Series[0]->Color = System::Drawing::Color::Red;
точно пространство имён...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2015, 08:47
Помогаю со студенческими работами здесь

Как создать структуру, где будут поля с указателями на эту же структуру?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef struct DoubleQueue { queue* ar; queue* al; int data; }...

Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?..
Нужно отредактировать структуру по выбору пользователя. Проблема заключается в создании функции. Подскажите, а лучше покажите, как...

Как правильно задать http запрос, если нужно задать reqest header?
В программе нужно перезагрузить роутер, исспользуя httpanalazer получилось определить какой запрос я должен отослать - он на фото ...

Рисование треугольника. Определить структуру Points и структуру Triangle.
Помогите: определить структуру Points и структуру Triangle, включающую в себя три точки (объекты структуры Points). Ввести число элементов...

Заполнить структуру B которая содержит структуру A при условии тога что в A уже записано имя
Есть две структуры. struct A{ char name; char last; }; struct B{ char name A list; };


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru