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

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

20.01.2015, 08:31. Показов 9829. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru