Форум программистов, компьютерный форум CyberForum.ru

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

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

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 15:50     Переменная и CMD
Посмотрите здесь:

C++ Работа с cmd
cmd комманды из c++ C++
интерпретатор cmd C++
Русский язык в CMD C++
C++ С++ и cmd
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cosmic
33 / 31 / 0
Регистрация: 29.08.2012
Сообщений: 84
Записей в блоге: 1
03.10.2013, 16:04     Переменная и CMD #2
попробуй набросать пример кода что ты хочешь сделать, а то я лично не допер твою идею
Dead_Messiah
 Аватар для Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 125
Завершенные тесты: 1
03.10.2013, 18:52  [ТС]     Переменная и CMD #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
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 18:58     Переменная и CMD #4
контейнер строк какой-нибудь заведи, из которого по индексу можно выбирать элементы. и когда увеличиваешь свою n, проверь, не вышла ли она за пределы имеющихся элементов, и если да - сбрасывалась бы снова в нуль.
Dead_Messiah
 Аватар для Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 125
Завершенные тесты: 1
03.10.2013, 19:07  [ТС]     Переменная и CMD #5
novi4ok, а компилятор в таком случае будет принимать строку строкой, или именно путём к файлу?
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 19:10     Переменная и CMD #6
компилятор понятия не имеет о путях к файлам. что означают строки,- нецензурные выражения или пути к файлам, - компилятору все равно
Dead_Messiah
 Аватар для Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 125
Завершенные тесты: 1
03.10.2013, 19:14  [ТС]     Переменная и CMD #7
novi4ok, я просто чего этот вопрос задал..если создать переменную типа char (размер равен количеству символов в пути к файлу), и присвоить ей путь к файлу то трек попросту не воспроизводится.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:39     Переменная и CMD #8
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
1=("C:\1.mp3");
Обратные слеши двойными нужно писать.
Dead_Messiah
 Аватар для Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 125
Завершенные тесты: 1
03.10.2013, 21:09  [ТС]     Переменная и CMD #9
alsav22, суть вовсе не в этом, это был псевдокод.
Суть в том, чтоб найти способ сделать вот так (опять псевдокод):
C++
1
1=(C:\1.mp3);
ЗЫЖ с одним backslash'ем тоже нормально работает.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:17     Переменная и CMD #10
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
суть вовсе не в этом
Даже если суть не в этом, то писать нужно правильно, иначе не понять: почему-что не открывается.
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
ЗЫЖ с одним backslash'ем тоже нормально работает.
С одним каким? Прямым или обратным? Как это может работать, когда такого символа, в С++, нет?
Dead_Messiah
 Аватар для Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 125
Завершенные тесты: 1
03.10.2013, 21:22  [ТС]     Переменная и CMD #11
alsav22,
C++
1
mciSendString(L"play E:\Forever.mp3", NULL, 0, NULL);
Backslash - обратный.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:29     Переменная и CMD #12
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
Backslash - обратный.
Вижу, что обратный. Файл открывается? Даже по подсветке синтаксиса видно, что ошибка.

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

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

Плюсы, приложение Windows Forms.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:40     Переменная и CMD #16
Проект?

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

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

Создал тему тут, потому что я реально начинающий в плюсах.
Если ошибся - уж не обессудьте.
Вложения
Тип файла: zip Music_total.zip (2.39 Мб, 3 просмотров)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 22:58     Переменная и CMD #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 ==========
Dead_Messiah
 Аватар для Dead_Messiah
8 / 8 / 1
Регистрация: 22.10.2010
Сообщений: 125
Завершенные тесты: 1
03.10.2013, 22:58  [ТС]     Переменная и CMD #19
alsav22, спасибо большое за помощь, это то, что нужно было.

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

Не по теме:

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

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

C++ cmd make
cmd C++
C++ Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз

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

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

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

Не по теме:

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

Yandex
Объявления
03.10.2013, 23:33     Переменная и CMD
Ответ Создать тему
Опции темы

Текущее время: 22:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru