Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
1

Переменная и CMD

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

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

Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2013, 15:50
Ответы с готовыми решениями:

Переменная в запросе к cmd
Привет! Необходимая программа должна выключать комп по заданному времени. Работаю в VS2010 C# Win...

For + psexec + cmd /c + системная переменная
Удалённый ПК с ip например 10.20.30.40 с системным диском E: В батнике команда PsExec.exe...

Не работает переменная в Process.Start (CMD)
Как можно использовать переменные из CMD в этом коде? Process.Start("cmd.exe", "/C set...

Как написать cmd создающий другой cmd
Добрый день. Смысл в том, чтобы создать CMD с настройками текущего ПК: имя компьютера и имя...

28
34 / 32 / 5
Регистрация: 29.08.2012
Сообщений: 84
Записей в блоге: 1
03.10.2013, 16:04 2
попробуй набросать пример кода что ты хочешь сделать, а то я лично не допер твою идею
0
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
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
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 18:58 4
контейнер строк какой-нибудь заведи, из которого по индексу можно выбирать элементы. и когда увеличиваешь свою n, проверь, не вышла ли она за пределы имеющихся элементов, и если да - сбрасывалась бы снова в нуль.
0
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
03.10.2013, 19:07  [ТС] 5
novi4ok, а компилятор в таком случае будет принимать строку строкой, или именно путём к файлу?
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.10.2013, 19:10 6
компилятор понятия не имеет о путях к файлам. что означают строки,- нецензурные выражения или пути к файлам, - компилятору все равно
0
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
03.10.2013, 19:14  [ТС] 7
novi4ok, я просто чего этот вопрос задал..если создать переменную типа char (размер равен количеству символов в пути к файлу), и присвоить ей путь к файлу то трек попросту не воспроизводится.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 19:39 8
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
1=("C:\1.mp3");
Обратные слеши двойными нужно писать.
0
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
03.10.2013, 21:09  [ТС] 9
alsav22, суть вовсе не в этом, это был псевдокод.
Суть в том, чтоб найти способ сделать вот так (опять псевдокод):
C++
1
1=(C:\1.mp3);
ЗЫЖ с одним backslash'ем тоже нормально работает.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:17 10
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
суть вовсе не в этом
Даже если суть не в этом, то писать нужно правильно, иначе не понять: почему-что не открывается.
Цитата Сообщение от Dead_Messiah Посмотреть сообщение
ЗЫЖ с одним backslash'ем тоже нормально работает.
С одним каким? Прямым или обратным? Как это может работать, когда такого символа, в С++, нет?
0
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
03.10.2013, 21:22  [ТС] 11
alsav22,
C++
1
mciSendString(L"play E:\Forever.mp3", NULL, 0, NULL);
Backslash - обратный.
0
5498 / 4893 / 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
8 / 8 / 2
Регистрация: 22.10.2010
Сообщений: 126
03.10.2013, 21:31  [ТС] 13
alsav22, так файл открывается безо всяких проблем. Что с одним слэшем, что с двумя.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:35 14
Это где такие чудеса? Среда и ОС?

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

Плюсы, приложение Windows Forms.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
03.10.2013, 21:40 16
Проект?

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

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

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

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

Не по теме:

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

0
5498 / 4893 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2013, 23:33
Помогаю со студенческими работами здесь

Восстановление значений cmd [cmd, ooov.net]
Здравствуйте, Столкнулся с такой проблемой, при запуске Windows открывался cmd и осуществлялся...

Переменная=Документ.имя. Сделать выборку всех документов с именем Переменная
Привет всем. У меня есть проблема и варианты решения, но они не работают. Проблема вот такая:...

Модульная переменная или блочная статическая переменная: что лучше
Переменная (тип String) нужна на всем протяжении работы программы. Нужен совет опытных - что...

Проблема с Adodc: 'Переменная объекта или переменная блока With не задана'
В свойствах самого контрола (MS ADO Data Control) проверка подключения к атблице (подключаюсь через...

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

Public переменная, или private переменная и функции get/set
Пишу свой класс, который потом будет много где использоваться и пытаюсь осознать, как правильнее и,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru