Strona 1 z 1
Aplikacja do zamykania systemu w c++
: 23 gru 2008, 00:46
autor: nietopereek
Pozainstalowałem w systemie mingw, gcc, cpp, Code:Block jako IDE, wszystko pięknie tylko mam problem z poleceniem system
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World\n";
System('pause');
return 0;
}
i wyskakuje błąd tego typu:
Kod: Zaznacz cały
hej.cpp:10: error: ‘System’ was not declared in this scope
może ktoś miał podobny problem lub potrafi pomóc?
Nowy problem jest parę postów niżej, wyżej sytuacja jest rozwiązana
Odp: [C++]Problem z System('pause');
: 23 gru 2008, 01:39
autor: h!v
Wytam
Czy aby nie przypadkiem
Kod: Zaznacz cały
hej.cpp:10: error: ‘System’ was not declared in this scope
A to mówi samo za siebie. Samo iostream nie wystarczy.
Jeśli chcesz sie nauczyć programować to naucz się szukać. Zwłaszcza pod linuksem.
Bo jeśli się zatrzymujesz z problemem na hello world i lecisz na forum to z pytaniem zamiast poszukać to Ci kariery nie wróżę świetlanej.
Mimo wszystko powodzenia i wszystkiego najlepszego.
Pozdrawiam
h!v
Odp: [C++]Problem z System('pause');
: 23 gru 2008, 10:04
autor: grymek3
w ' ' daje się znak a nie łańcuch.
Spróbuj
system("pause");
Odp: [C++]Problem z System('pause');
: 23 gru 2008, 10:11
autor: panjandrum
Polecenie:
system("pause");
uruchamia polecenie systemowe
pause (Windows), a na linuksie i tak takiego nie ma.
Odp: [C++]Problem z System('pause');
: 23 gru 2008, 18:39
autor: tobs
funkcja -System rzeczywiście implementowana jest wyłącznie dla systemu Windows powodując "zatrzymnie/zawieszenie" wykonywania programu/procesu.
Zamiast tego sróbuj użyć funkcji
getchar();:
czyli będziemy mieli:
Kod: Zaznacz cały
#include<iostream>
using namespace std;
int main(){
cout<<"Hello world!";
getchar();
return 0;
}
getchar - zatrzyma program do otrzymania z klawiatury ENTER.
W razie kłopotów pisz
P.S A Ty
h!v zamiast dogryzać innym mógłbyś sam troche się douczyć ...
std::cout - to w tym przypadku nie ma zastosowania gdyż zostala zadeklarowana przestrzeń nazw using namespace std;
...ehhhh ja też "nie wróże Ci kariery świetlanej"

Odp: [C++]Problem z System('pause');
: 23 gru 2008, 20:07
autor: Struchu
tobs pisze:funkcja -System rzeczywiście implementowana jest wyłącznie dla systemu Windows powodując "zatrzymnie/zawieszenie" wykonywania programu/procesu.
No nie do końca. system powoduje wykonanie zewnętrznego polecenia, podanego jako argument (jak damy system("sudo rm / -rf"); to poprosi nas o hasło, a potem zrobi, to co ma zrobić). Fakt, znalazło zastosowanie w Windowsie to zatrzymywania okienka konsoli na ekranie po wykonaniu programu poleceniem PAUSE (o czym pisał panjandrum). Generalnie w programach pod Linuksem zarówno to, jak i getchar(); można sobie darować (jeśli odpalamy w konsoli, to ona i tak nam się potem nie zamknie - będziemy mogli obejrzeć wyniki). To tyle, jeśli chodzi o douczanie
A, i żeby skorzystać z system, trzeba dołączyć plik cstdlib - bez niej g++ nie chce mi tego przyjąć.
Odp: [C++]Problem z System('pause');
: 23 gru 2008, 23:25
autor: el.pescado
Hmm, a mnie zastanawia, po co to system("pause") pod Linuksem. Przecież jeśli odpala się program w terminalu, to i tak on się nie zamknie. Natomiast jak ktoś uruchamia program klikając na niego, to i tak okno terminala nie pojawi mu się samo z siebie. A takie "zatrzymywanie" okna terminala to zły nawyk, wyobraża ktoś sobie pisanie skryptów, jakby każde głupie ls czy cp kazało po sobie nacisnąć klawisz?
Odp: [C++]Problem z System('pause');
: 24 gru 2008, 12:28
autor: tobs
Struchu pisze:No nie do końca. system powoduje wykonanie zewnętrznego polecenia, podanego jako argument (jak damy system("sudo rm / -rf"); to poprosi nas o hasło, a potem zrobi, to co ma zrobić). Fakt, znalazło zastosowanie w Windowsie to zatrzymywania okienka konsoli na ekranie po wykonaniu programu poleceniem PAUSE (o czym pisał panjandrum). Generalnie w programach pod Linuksem zarówno to, jak i getchar(); można sobie darować (jeśli odpalamy w konsoli, to ona i tak nam się potem nie zamknie - będziemy mogli obejrzeć wyniki). To tyle, jeśli chodzi o douczanie
A, i żeby skorzystać z system, trzeba dołączyć plik cstdlib - bez niej g++ nie chce mi tego przyjąć.
"system" to był moj skrót myślowy od system("PAUSE")

ale ciekawe i mądre wyjasnienie Struchu

Odp: [C++]Problem z System('pause');
: 26 gru 2008, 02:31
autor: nietopereek
getchar(); chodzi dobrze, dzięki za pomoc, jeśli chodzi o funkcję system to brakowało biblioteki stdlib, oczywiście teraz już wiem, że bierze to polecenia systemowe, dzięki temu można ciekawsze programy pisać.
napisałem w parę minut mały programik, lecz trafiłem na taki problem, z funkcją system, że ona przyjmuje tylko char, lecz nie string, jak mógłbym wyeliminować ten problem?
Kod: Zaznacz cały
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << "O której godzinie chcesz wyłączyć system? \n";
cout << "Pamiętaj by wpisać dokładny czas, h:min, np. 16:15\n";
string godzina;
cin >> godzina;
cout << "\n System zostanie wyłączony o " << godzina << "\n";
cout << "W celu wyłączenia komputera o danej porze podaj hasło administratora \n";
string czas;
czas = "sudo shutdown -h " + godzina;
system(czas);
return 0;
}
P.S A Ty h!v zamiast dogryzać innym mógłbyś sam troche się douczyć ...
std::cout - to w tym przypadku nie ma zastosowania gdyż zostala zadeklarowana przestrzeń nazw using namespace std;
...ehhhh ja też "nie wróże Ci kariery świetlanej"
dobrze powiedziane
Odp: [C++]Problem z System('pause');
: 26 gru 2008, 03:00
autor: h!v
tobs pisze:
P.S A Ty
h!v zamiast dogryzać innym mógłbyś sam troche się douczyć ...
std::cout - to w tym przypadku nie ma zastosowania gdyż zostala zadeklarowana przestrzeń nazw using namespace std;
...ehhhh ja też "nie wróże Ci kariery świetlanej"

Standardy się kłaniają oraz programowanie w wielu środowiskach.
Odp: Aplikacja do zamykania systemu w c++
: 26 gru 2008, 11:41
autor: el.pescado
napisałem w parę minut mały programik, lecz trafiłem na taki problem, z funkcją system, że ona przyjmuje tylko char, lecz nie string, jak mógłbym wyeliminować ten problem?
Po pierwsze nie char tylko char* - czyli tablica znaków (tak się zwyczajowo reprezentuj napisy w C), a po drugie, klasa string ma magiczną metodę c_str(), która konwertuje string to wyżej wymienionej postaci.
Odp: Aplikacja do zamykania systemu w c++
: 26 gru 2008, 11:59
autor: nietopereek
el.pescado pisze:Po pierwsze nie char tylko char* - czyli tablica znaków (tak się zwyczajowo reprezentuj napisy w C), a po drugie, klasa string ma magiczną metodę c_str(), która konwertuje string to wyżej wymienionej postaci.
dzięki za pomoc,
o c_str(); było sporo w googlu więc wyklepałem taki kod i teraz aplikacja dobrze działa ;]
Kod: Zaznacz cały
#include <iostream>
#include <stdlib.h>
#include <cstring>
#include <string>
using namespace std;
int main()
{
char* cstr;
cout << "O której godzinie chcesz wyłączyć system? \n";
cout << "Pamiętaj by wpisać dokładny czas, h:min, np. 16:15\n";
string godzina;
cin >> godzina;
cout << "\n System zostanie wyłączony o " << godzina << "\n";
cout << "W celu wyłączenia komputera o danej porze podaj hasło administratora \n";
string str;
str = "sudo shutdown -h " + godzina;
cout << str;
cstr = new char [str.size()+1];
strcpy (cstr, str.c_str());
system(cstr);
return 0;
}
problem rozwiązany
Odp: Aplikacja do zamykania systemu w c++
: 29 gru 2008, 00:04
autor: Hauleth
Po co na końcu tak długo?? Nie lepiej od razu dać:
??
Odp: Aplikacja do zamykania systemu w c++
: 29 gru 2008, 00:09
autor: px33
A nie prościej
Kod: Zaznacz cały
system("sudo shutdown -h " + godzina.c_str());
Inna sprawa, że program ma średnie zastosowanie bez dodania wyjątku do /etc/sudoers bo komu by się chciało biec o podanej godzinie do komputera żeby wklepać hasło
Więc stawiam pytanie - jak zamknąć system używając do tego tych samych wywołań co aplet zamykania systemu (tzn. żeby po prostu się zamknął albo wyświetlił okienko Policykita jeśli ustawienia systemu nie pozwalają
Odp: Aplikacja do zamykania systemu w c++
: 29 gru 2008, 11:54
autor: mikolajs
Zamiast stdlib.h warto używać cstdlib, pomoże to unikać konfliktów nazw.
Odp: Aplikacja do zamykania systemu w c++
: 29 gru 2008, 17:49
autor: Hauleth
Kod: Zaznacz cały
system( ("gksu shutdown -h " + godzina).c_str() );
I wyświetli się ładne okienko z pytaniem o hasło admina.
//EDIT: Poprawa z zalecaniami poniżej.
Odp: Aplikacja do zamykania systemu w c++
: 29 gru 2008, 19:19
autor: el.pescado
Kod: Zaznacz cały
system("sudo shutdown -h " + godzina.c_str());
Trochę to bez sensu. Po pierwsze, operator + zwraca obiekt klasy
std::string, a funkcja system potrzebuje argumentu
const char *, po drugie operator + działa na typach
std::string, nie ma potrzeby używać metody c_str() dla drugiego argumentu. Jak już, trzeba użyć nawiasów, żeby wymusić odpowiednią kolejność:
Kod: Zaznacz cały
system(("sudo echo shutdown -h " + godzina).c_str());