Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
#1

Переменная и CMD - C++

03.10.2013, 15:50. Просмотров 976. Ответов 28
Метки нет (Все метки)

Здравствуйте, форумчане!
Появился один вопрос. Возможно, я немного некорректно назвал тему, но я старался, чтоб название темы максимально соответствовало моему вопросу.
Итак, допустим у нас есть переменная n. И есть функция system. Например, есть вот такая строка:
C++
1
system("pause");
Я хочу сделать так, чтоб вышеуказанная строка была присвоена переменной n. То есть, я в какой-то функции использую переменную n, и хочу, чтоб при использовании переменной выполнялась функция "system".
Вопрос: можно ли так присвоить вообще?
Если можно, то какого типа должна быть переменная n?
Если нельзя, то подскажите, пожалуйста, иные варианты выхода из этой ситуации.

Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 15:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переменная и CMD (C++):

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз - C++
Исходники: /* main.cpp */ #include "hider.h" int main(void) { return 0; } /* foo.cpp */

Переменная или переменная и условие - C++
Привет всем. Стало интересно. Есть предположим функция. В ней ссылкой передается аргумент Status; Как лучше сделать? ...

cmd - C++
привет всем, нужен код программы - которая запускает cmd и одновременно программу которая считает сумму двух целых и выписывает их в файл,...

С++ и cmd - C++
Можно ли написать программу, которая будет выполнять консольные команды windows? Рассматривал вариант написать программу, которая запускает...

Работа с cmd - C++
Пытаюсь установить директорию в командной строке, но выходит ошибка - директория устанавливается не та. Вот кусок кода: char cDir; ...

интерпретатор cmd - C++
Добрый вечер! Очень нужна ваша помощь.Есть программа.Должна выполнять такие действия: Создание директории(папки) Удаление файла ...

28
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:40 #16
Проект?

Добавлено через 1 минуту
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Плюсы, приложение Windows Forms.
CLI это не С++.

Добавлено через 2 минуты
По Windows Forms другая ветка есть.
0
Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 21:42  [ТС] #17
alsav22, ну посмотрите. Заодно и, возможно, прояснятся какие-то моменты.

Создал тему тут, потому что я реально начинающий в плюсах.
Если ошибся - уж не обессудьте.
0
Вложения
Тип файла: zip Music_total.zip (2.39 Мб, 3 просмотров)
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 22:58 #18
Коряво сделано (ничего не понимаю в Windows Forms), но работает. Файлы mp3 (в начале кода, в массиве прописаны) свои пропишите и добавьте в папку проекта:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <windows.h>
#include <string>
#include <vector>
#pragma comment(lib, "winmm.lib")
#pragma once
 
namespace Music_total {
 
    static std::wstring path[3] = {L"\Forever.mp3", L"\son.mp3", L"\gena.mp3"};
    static std::wstring com[2] = {L"play ", L"stop "};
    static int i = 0;
 
    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
    /// </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::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
    private: System::Windows::Forms::PictureBox^  pictureBox1;
    private: System::Windows::Forms::Button^  button3;
    protected: 
 
    private:
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        void InitializeComponent(void)
        {
            System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());
            this->button3 = (gcnew System::Windows::Forms::Button());
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->BeginInit();
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(239, 262);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(75, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Play";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
            // 
            // button2
            // 
            this->button2->Location = System::Drawing::Point(239, 303);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(75, 23);
            this->button2->TabIndex = 1;
            this->button2->Text = L"Stop";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
            // 
            // pictureBox1
            // 
            this->pictureBox1->Image = (cli::safe_cast<System::Drawing::Image^  >(resources->GetObject(L"pictureBox1.Image")));
            this->pictureBox1->Location = System::Drawing::Point(144, 2);
            this->pictureBox1->Name = L"pictureBox1";
            this->pictureBox1->Size = System::Drawing::Size(244, 244);
            this->pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::Zoom;
            this->pictureBox1->TabIndex = 2;
            this->pictureBox1->TabStop = false;
            this->pictureBox1->Click += gcnew System::EventHandler(this, &Form1::pictureBox1_Click);
            // 
            // button3
            // 
            this->button3->Location = System::Drawing::Point(239, 345);
            this->button3->Name = L"button3";
            this->button3->Size = System::Drawing::Size(75, 23);
            this->button3->TabIndex = 3;
            this->button3->Text = L"Next";
            this->button3->UseVisualStyleBackColor = true;
            this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(579, 455);
            this->Controls->Add(this->button3);
            this->Controls->Add(this->pictureBox1);
            this->Controls->Add(this->button2);
            this->Controls->Add(this->button1);
            this->Name = L"Form1";
            this->Text = L"Form1";
            (cli::safe_cast<System::ComponentModel::ISupportInitialize^  >(this->pictureBox1))->EndInit();
            this->ResumeLayout(false);
 
        }
#pragma endregion
 
        
    
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
             {
                 
                 std::wstring str = com[0] + path[i];
                 mciSendString(str.c_str(), NULL, 0, NULL);
                 
              }
    
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
                 
                 //mciSendString(L"stop \Forever.mp3", NULL, 0, NULL);
                  std::wstring stop = com[1] + path[i];
                  mciSendString(stop.c_str(), NULL, 0, NULL);
             }
    
    private: System::Void pictureBox1_Click(System::Object^  sender, System::EventArgs^  e) {
                 
             }
    private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) 
             {
 
                 std::wstring stop = com[1] + path[i];
                 mciSendString(stop.c_str(), NULL, 0, NULL);
                 ++i;
                 if (i == 3) i = 0;
                 std::wstring str = com[0] + path[i];
                 mciSendString(str.c_str(), NULL, 0, NULL);
             
             }
};
}


Добавлено через 1 минуту
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Но "С++ для начинающих" написано именно в этой ветке, но не в другой.
Ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
CLI это не С++.
Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Если модераторы сочтут, что тема не в нужной ветке - они предпримут соответствующие меры.
Хорошо бы...



Добавлено через 12 минут
Кстати, при компиляции, предупреждения у вас такие выдаются (насчёт обратных слешей)?
1>------ Перестроение всех файлов начато: проект: Music_total, Конфигурация: Debug Win32 ------
1> stdafx.cpp
1> AssemblyInfo.cpp
1> Music_total.cpp
1>c:\documents and settings\administrator\desktop\music_total\Form1.h(9): warning C4129: F: неизвестная escape-последовательность
1>c:\documents and settings\administrator\desktop\music_total\Form1.h(9): warning C4129: s: неизвестная escape-последовательность
1>c:\documents and settings\administrator\desktop\music_total\Form1.h(9): warning C4129: g: неизвестная escape-последовательность
1> Создание кода...
1> .NETFramework,Version=v4.0.AssemblyAttributes.cpp
1> Music_total.vcxproj -> C:\Documents and Settings\Administrator\Desktop\Music_total\Debug\Music_total.exe
========== Перестроение всех: успешно: 1, с ошибками: 0, пропущено: 0 ==========
1
Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 22:58  [ТС] #19
alsav22, спасибо большое за помощь, это то, что нужно было.

Мм, когда я компилил свою версию проекта, то было такое, да. Правда, раз оно работало, я счёл это некритичным. А теперь такого нету, хотя бекслэш так и остался в одном экземпляре.

Не по теме:

Хотелось бы уточнить, чтоб не было подобных случаев в будущем. Проект, что я выложил не С++ ибо используется .NET?

0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 23:33 #20
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
хотя бекслэш так и остался в одном экземпляре.
И работает, если только один обратный. Если прямой или двойной обратный, то нужно с точкой писать: ./ , .\\ . Тогда работает.

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Проект, что я выложил не С++ ибо используется .NET?
Боюсь неправильно сказать... На форуме, эесперты, не один раз писали, что CLI это другой язык, не С++.

0
Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 23:40  [ТС] #21
alsav22, ещё раз за прояснение. С Вами приятно иметь дело

Не по теме:

Ну, по этому поводу Википедия говорит, цитирую, "C++/CLI — привязка языка программирования С++ к среде программирования .NET фирмы Microsoft. Она интегрирует С++ стандарта ISO с Объединённой Системой Типов (Unified Type System, UTS), рассматриваемой как часть Общей Языковой Инфраструктуры (Common Language Infrastructure, CLI). Она поддерживает и исходный уровень, и функциональную совместимость исполняемых файлов, скомпилированных с родного и управляемого C++. C++/CLI представляет собой дальнейшее развитие С++. C++/CLI стандартизирован в ECMA как ECMA-372."
И примечание: "Примечание: В Microsoft Visual Studio 2010 отсутствует IntelliSense для C++/CLI. Причину разработчики не огласили, однако предложили временное решение для смешанных проектов C++ и С++/CLI. Для первых файлов нужно не указывать при компиляции в свойствах проекта /clr: nostdlib. Данный баг исправлен в Visual Studio 2012".
Из этого следует, что CLI - расширение для C++. Равно, как плюсы являются расширением чистого С.

0
alsav22
03.10.2013, 23:40
  #22

Не по теме:


Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Из этого следует, что CLI - расширение для C++
Для спора знаний нет, пусть старшие товарищи рассудят.
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Равно, как плюсы являются расширением чистого С.
Сильно сомневаюсь, что это такое же расширение.
Если я правильно понимаю, то код на С++ - это код, который можно скомпилировать стандартным компилятором на другой платформе (переносимый код).

0
Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 23:46  [ТС] #23

Не по теме:

alsav22, согласен, в конце-концов, не нам об этом судить. Та и насчёт переносимости плюсов не могу не согласиться.



Всем спасибо, тему можно считать закрытой.
0
alsav22
03.10.2013, 23:49
  #24

Не по теме:

Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Та и насчёт переносимости плюсов не могу не согласиться.
Тут даже дело до переносимости не доходит. Я не представляю, как это код, например, можно скомпилировать в windows, но не windows-компилятором. Например, mingw.

0
Dead_Messiah
03.10.2013, 23:51  [ТС]
  #25

Не по теме:

alsav22, а я над этим ещё и не пытался думать. В следующем семестре будет теория компиляции. Может, расскажут чего по этому поводу.

0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 23:57 #26
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
novi4ok, я просто чего этот вопрос задал..если создать переменную типа char (размер равен количеству символов в пути к файлу), и присвоить ей путь к файлу то трек попросту не воспроизводится.
не типа char, а типа char* ты имел ввиду?
пользуйся лучше строками примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static const int MAX_TRACK_ID = 2;
map<int, std::string> track_map;
track_map [0] = "d:\\haligali.mp3";
track_map [1] = "d:\\votktotosgoro4ki.mp3";
track_map [2] = "d:\\hejslavjane.mp3";
 
int track_idx = 0;
play (track_map[track_idx].c_str()); // или как там ф-я что играет, и как у нее аргумент
...
// нажали на кнопку или еще что...
track_idx++;
if (track_idx >= MAX_TRACK_ID){
  track_idx = 0;
}
play (track_map[track_idx].c_str());
...
считай, это тоже - "псевдокод" ;)
0
Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
04.10.2013, 00:04  [ТС] #27
novi4ok, да, я уже понял, что строки рулят %)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.10.2013, 00:08 #28

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
но не windows-компилятором. Например, mingw.
Не так написал: не microsoft-компилятором.



Добавлено через 2 минуты

Не по теме:

novi4ok, я твою идею уже воплотил в код (20 пост).

0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.10.2013, 00:11 #29
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Из этого следует, что CLI - расширение для C++. Равно, как плюсы являются расширением чистого С.[/OFF]
.net не задумывался для с++. просто имеется туева хуча кода на с++, и чтобы не оттолкнуть от новой технологии разработчиков и пользователей, майкрософт придумал этого уродца. приходилось этим заниматься (использовать старый код в .net проектах), действительно проще (точнее - быстрее. простоты там нет) портировать с++ в это э-ээ... расширение, чем в, скажем, сишарп. но новый код на "этом" писать не рекомендую. или откажись от дотнета, или кодируй на сишарпе.

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение

Не по теме:

novi4ok, я твою идею уже воплотил в код (20 пост).

ребята, не поспеваю за вами - только прочту, отвлекусь на телик, отвечу - а тут уже другое столетие ...
0
04.10.2013, 00:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 00:11
Привет! Вот еще темы с ответами:

cmd комманды из c++ - C++
как мне писать команды в C++ ? есть функция system() , я пишу туда ... ну посмотрите скрипт , поймете : #include &lt;iostream&gt; using...

cmd make - C++
Я понимаю, что вопрос немного не в ту ветку, но он очень тесно связан с c++. Скачивал уже не одну библиотеку, содержащую Makefile. Ни сам...

Запуск не через cmd - C++
Компилятор Dev C++, через что ещё можно произвести выполнение, кроме как через Cmd, и как сделать? Спасибо!

Получение команд из CMD - C++
Собственно, есть тривиальная задача написания программы на С++ с CLI(не путать с C++/CLI мелко-мягких). Прога задумывается под две ОС:...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru