Yritän tehdä C++:lla semmoista tiedostonhallintaohjelmaa, muttakun se ei suostu toimimaan. Mikä tässä koodissa mättää:
#include <string>
#include <cstdlib>
#include <string>
#include <iostream>
int main()
{
std::string toiminto, tiedosto;
system("CLS");
system("TITLE SystemCONTROLLER v1.0");
system("CLS");
std::cout << "Lue ohjelman mukana tulevasta ohjeesta tietoja ohjelmasta!\n\n";
std::cout << "Komentolista:\n";
std::cout << "DOS - Palaa DOS-tilaan\n";
std::cout << "EXIT - Poistuu koko ohjelmasta\n";
std::cout << "OHJE - Tulostaa ohjelman tiedot\n";
std::cout << "LKANSIO [polku] - Luo kansion\n";
std::cout << "PTIEDOSTO [polku] - Poistaa tiedoston\n";
std::cout << "OPEN [polku] - Avaa tiedoston\n";
std::cout << "PKANSIO [polku] - Poistaa kansion\n\n\n";
std::cin >> toiminto;
std::getline(std::cin, tiedosto); {
if ( toiminto == "LKANSIO" ) {
tiedosto = "md " + tiedosto;
system("SystemCONTROLLER.exe");
}
else if ( toiminto == "PTIEDOSTO" ) {
tiedosto = "erase " + tiedosto;
system("SystemCONTROLLER.exe");
}
else if ( toiminto == "DOS" ) {
system("CLS");
system("data\\data_0.exe");
system("EXIT");
}
else if ( toiminto == "EXIT" ) {
return 0;
}
else if ( toiminto == "OPEN" ) {
tiedosto = "rename " + tiedosto;
system("SystemCONTROLLER.exe");
}
else if ( toiminto == "PKANSIO" ) {
tiedosto = "rd " + tiedosto;
system("SystemCONTROLLER.exe");
}
else if ( toiminto == "OHJE" ) {
system("title SystemCONTROLLER - Ohje");
system("CLS");
std::cout << "Copyright/Omistaja: Emil Tuomi (http://koti.mbnet.fi/~cpf/)\n";
std::cout << "Ohjelman KOKO nimi: SystemCONTROLLER v1.0\n";
std::cout << "Ohjelman nimi: SystemCONTROLLER\n";
std::cout << "Versio: 1.0\n";
std::cout << "Tyyppi: Ilmainen. Shareware.\n";
std::cout << "Tietoa:\nOhjelmaa ei saa jakaa muuaalla, kuin omistajan omilla sivuilla.\n";
std::cout << "Ohjelmaa ei saa siis jakaa, vaikka omistaja/copyrightin omistaja toisin sanoisi.\n\n\n";
system("PAUSE");
system("SystemCONTROLLER.exe");
}
std::system(tiedosto.c_str());
system("SystemCONTROLLER.exe");
}
}Tiedän, että ohjelmassa on paljon virheitä. Älkääkä kommentoiko mistään, muusta kuin siitä, miksei tuo koodi suostu luomaan/poistamaan tiedostoja. Tuo on muutenkin kesken.
Siis otetaanpa nyt tuo tiedoston poistokoodi:
else if ( toiminto == "PTIEDOSTO" ) {
tiedosto = "erase " + tiedosto;
system("SystemCONTROLLER.exe");
}Asetat siis tiedosto-merkkijonolle tuollaisen arvon, ja sen jälkeen yrität suorittaa samassa hakemistossa olevaa SystemCONTROLLER.exe-tiedostoa. Miten tämän pitäisi poistaa tiedosto?
Muutenkin system()-funktion käyttö ei ole mitenkään hyvä idea, vaan sitä käyttäessäsi oletat että tietyt ohjelmat löytyvät koneelta tietyistä poluista.
Mistähän tuo systemcontroller.exe voisi tietää mitä olet kirjoittanut tässä ohjelmassa olevaan tiedosto-muuttujaan kun et sitä sille kerro?
Kiitos. Nyt toimii.
Aihe on jo aika vanha, joten et voi enää vastata siihen.