Haluaisin käynnistää ohjelman toiseen ikkunaan ohjelman yhteydessä,
mutta sen sijaan että ohjelma avaa uuden ikkunan, kääntäjä (Dev-C++) avaa vain sen ohjelman, jonka koodin ohjelman olisi pitänyt käynnistää,esim.
#include <iostream> int main() { using namespace std; cout <<"Hei putka!"; //Tätä ei näy. std::cin.get(); system("c:\\hakemisto\\ohjelma.exe"); //Tämä on muka äsköinen ohjelma. }
Selitäpä uudestaan.
Kääntäjä ei avaa mitään ohjelmia. Se vain kääntää koodistasi objektitiedoston. Koodissasi oleva systeemikutsu on se joka ohjelman avaa. Se miksi tervehdyksesi ei tule näkyviin, johtunee siitä ettet flushaa tuota coutin käyttämää standardivirtaa. Endl lisääminen rivin loppuun pitäisi riittää.
Using namespacen käyttö on myös aika turhaa, jos kumminkin koodissa kirjoitat nimiavaruuden auki.
Että minkä rivin loppuun? Ei oikein auttanut.
Voisit aloittaa lukemalla putkan C++-oppaan läpi, heti johdantosivulla on mainittu endl, etsi sitä tältä sivulta:
https://www.ohjelmointiputka.net/oppaat/opas.
Siis näin?
#include <iostream> int main() { std::cout <<"Hei putka!" << std::endl; //Tätä ei näy. std::cin.get(); system("c:\\hakemisto\\ohjelma.exe"); //Tämä on muka äsköinen ohjelma. }
Jos näin,niin ei kyllä minua auttanut yhtään.
Endl on rivinvaihto, kyllä minä sen tiedän.
http://www.cplusplus.com/reference/iostream/
Endl huuhtelee virran ja lisää rivinvaihdon. "\n" on rivinvaihto.
Mitä tulee kysymykseesi muuten, niin en minäkään oikein tajunnut, mitä yrität saada aikaan.
Nykyisellään ohjelma tulostaa "Hei putka!". Pyytää sen jälkeen syötettä ja sen saatuaan ajaa ulkoisen ohjelman "ohjelma.exe". Ymmärsin että se oli mitä haettiinkin, mutta ilmeisesti minäkin tajusin väärin mitä ajat takaa.
Torgo kirjoitti:
Nykyisellään ohjelma tulostaa "Hei putka!". Pyytää sen jälkeen syötettä ja sen saatuaan ajaa ulkoisen ohjelman "ohjelma.exe". Ymmärsin että se oli mitä haettiinkin, mutta ilmeisesti minäkin tajusin väärin mitä ajat takaa.
Et tajunnut väärin.
Hyvä, että toimii. Mikä sitten on ongelma?
Se ei näytä edelleenkään ohjelmaa,joka on ennen "ohjelma.exen" käynistämistä.
Mitä ei näytä? Selitä nyt ihan tarkasti, mitä tapahtuu, kun käynnistät ohjelman, ja sitten selitä erikseen, mitä mielestäsi pitäisi tapahtua.
Esimerkiksi jos nyt itse ajan ohjelmasi (lisättyäni ensin puuttuvan rivin #include <cstdlib>, jotta saan koodin käännettyä), tulostuu ensin teksti "Hei putka!", ja kun painan sitten enter-näppäintä, tulostuu virheilmoitus "sh: c:hakemistoohjelma.exe: command not found", minkä jälkeen ohjelma sulkeutuu.
Minulla avautuu CD-asema.(Sillä se on käynnistettävä ohjelma,jota sinulla ei ole. https://www.ohjelmointiputka.net/keskustelu/
Ei kuitenkkaan näy tekstiä. Tuo ohjelma joka tulostaa tekstin, oli vain esimerkki.
Tai,miten saisi CD-luukun avaamiskoodin tuohon "Hei putka!" ohjelmaan?
Torgo kirjoitti:
Nykyisellään ohjelma tulostaa "Hei putka!". Pyytää sen jälkeen syötettä ja sen saatuaan ajaa ulkoisen ohjelman "ohjelma.exe".
Ei pyydä syötettä, vaan enteriä :)
TVdata kirjoitti:
Tai,miten saisi CD-luukun avaamiskoodin tuohon "Hei putka!" ohjelmaan?
Itsehän juuri linkkasit ratkaisun?
#include <windows.h> int main(void) { mciSendString("set cdaudio door open", NULL, 0, NULL); return 0; }
Miten pistän mukaan sen toisen ohjelman? (Muu kuin pelkkä "Hei putka")
Mitä jos opettelisit edes alkeet ohjelmoinnista? Tuossa ohjelmassa on tasan yksi rivi, joka avaa CD-aseman (Windowsissa), ja voit helposti laittaa kyseisen rivin haluamaasi kohtaan omassa ohjelmassasi.
Metabolix ja muut ystävät, luulen, että ongelmamme on tällainen.
Onnistui. Tuo oli muuten aika hauska,vesikuusi.
Näytäpä vielä valmis koodisi.
#include <windows.h> #include <iostream> int main() { using namespace std; cout <<"Hei putka!" << std::endl; mciSendString("set cdaudio door open", NULL, 0, NULL); return 0; }
Tässä.
TVdata kirjoitti:
#include <windows.h> #include <iostream> int main() { using namespace std; ...
Laita using namespace std; main-funktion ulkopuolelle (jos et siis oikeasti halua rajata std-nimiavaruuden käyttöä mainin sisään).
E: using namespace std -määre ei muutenkaan ole aina kovin suositeltava. Kirjoita mieluummin:
std::cout std::cin std::endl jne.
Kuten oletkin yllä olevassa ohjelmassasi yhdessä kohtaa tehnyt ihan turhaan.
Ja opettele oikeasti ohjelmoimaan, jos et siis ole trolli. Et voi joka käänteessä spammata ongelmiasi putkaan. Opettele ratkaisemaan ne itse. Putkasta löytyy oikein hyvä C++ -opas, samoin kirjastoista löytyy hyviä kirjoja vasta-alkajille.
Onnea opintoihin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.