Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
#1

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

03.10.2013, 15:50. Просмотров 1060. Ответов 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++):

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

Переменная или переменная и условие
Привет всем. Стало интересно. Есть предположим функция. В ней ссылкой...

cmd
привет всем, нужен код программы - которая запускает cmd и одновременно...

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

интерпретатор cmd
Добрый вечер! Очень нужна ваша помощь.Есть программа.Должна выполнять такие...

cmd make
Я понимаю, что вопрос немного не в ту ветку, но он очень тесно связан с c++....

28
cosmic
34 / 32 / 5
Регистрация: 29.08.2012
Сообщений: 84
Записей в блоге: 1
03.10.2013, 16:04 #2
попробуй набросать пример кода что ты хочешь сделать, а то я лично не допер твою идею
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 18:52  [ТС] #3
cosmic, есть кнопка Button1 (Play), которая проигрывает *.mp3 через функцию mciSendString . И есть вторая кнопка Button2 (Next) для проигрывания следующего файла.
Я хочу, чтоб переменной n присваивался первый mp3 трек. А когда я нажимаю на кнопку Next, то чтоб n увеличивался на 1 и уже проигрывался другой трек.
Примерно оно у меня в голове выглядит вот так (псевдокод):

C++
1
2
3
4
5
6
7
8
9
10
n=0;
1=("C:\1.mp3");
2=("C:\2.mp3");
for (n=0;n<2;n++)
{
   if (Button2.Clicked())
    {
      n++;
     }
}
И я вот хочу потом вот эту переменную n загонять в функцию, которую использует кнопка Play (mciSendString), чтоб менялись пути к трекам и таким образом было организовано переключение между треками.

Добавлено через 2 часа 31 минуту
Я придумал, как сказать проще о том, что мне нужно.
А именно, как сделать аналогичную штуку в студии на с++?

Bash
1
set path=c:\1.mp3
0
novi4ok
551 / 504 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 18:58 #4
контейнер строк какой-нибудь заведи, из которого по индексу можно выбирать элементы. и когда увеличиваешь свою n, проверь, не вышла ли она за пределы имеющихся элементов, и если да - сбрасывалась бы снова в нуль.
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 19:07  [ТС] #5
novi4ok, а компилятор в таком случае будет принимать строку строкой, или именно путём к файлу?
0
novi4ok
551 / 504 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 19:10 #6
компилятор понятия не имеет о путях к файлам. что означают строки,- нецензурные выражения или пути к файлам, - компилятору все равно
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 19:14  [ТС] #7
novi4ok, я просто чего этот вопрос задал..если создать переменную типа char (размер равен количеству символов в пути к файлу), и присвоить ей путь к файлу то трек попросту не воспроизводится.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:39 #8
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
1=("C:\1.mp3");
Обратные слеши двойными нужно писать.
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 21:09  [ТС] #9
alsav22, суть вовсе не в этом, это был псевдокод.
Суть в том, чтоб найти способ сделать вот так (опять псевдокод):
C++
1
1=(C:\1.mp3);
ЗЫЖ с одним backslash'ем тоже нормально работает.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:17 #10
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
суть вовсе не в этом
Даже если суть не в этом, то писать нужно правильно, иначе не понять: почему-что не открывается.
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
ЗЫЖ с одним backslash'ем тоже нормально работает.
С одним каким? Прямым или обратным? Как это может работать, когда такого символа, в С++, нет?
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 21:22  [ТС] #11
alsav22,
C++
1
mciSendString(L"play E:\Forever.mp3", NULL, 0, NULL);
Backslash - обратный.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:29 #12
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Backslash - обратный.
Вижу, что обратный. Файл открывается? Даже по подсветке синтаксиса видно, что ошибка.

Добавлено через 59 секунд
Вот так видно, что правильно:
C++
1
mciSendString(L"play E:\\Forever.mp3", NULL, 0, NULL);
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 21:31  [ТС] #13
alsav22, так файл открывается безо всяких проблем. Что с одним слэшем, что с двумя.
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:35 #14
Это где такие чудеса? Среда и ОС?

Добавлено через 3 минуты
И проект какой? Может это не С++?
0
Dead_Messiah
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 21:35  [ТС] #15
alsav22, Visual Studio 2010, Win8 %)

Плюсы, приложение Windows Forms.
0
alsav22
5438 / 4833 / 831
Регистрация: 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 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 21:42  [ТС] #17
alsav22, ну посмотрите. Заодно и, возможно, прояснятся какие-то моменты.

Создал тему тут, потому что я реально начинающий в плюсах.
Если ошибся - уж не обессудьте.
0
Вложения
Тип файла: zip Music_total.zip (2.39 Мб, 3 просмотров)
alsav22
5438 / 4833 / 831
Регистрация: 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 / 2
Регистрация: 22.10.2010
Сообщений: 126
Завершенные тесты: 1
03.10.2013, 22:58  [ТС] #19
alsav22, спасибо большое за помощь, это то, что нужно было.

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

Не по теме:

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

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

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

Не по теме:

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

0
03.10.2013, 23:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2013, 23:33
Привет! Вот еще темы с решениями:

Работа с cmd
Пытаюсь установить директорию в командной строке, но выходит ошибка -...

cmd комманды из c++
как мне писать команды в C++ ? есть функция system() , я пишу туда ... ну...

Запуск не через cmd
Компилятор Dev C++, через что ещё можно произвести выполнение, кроме как через...

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


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

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

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