Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Tiedostonhallintaohjelma takkuilee

Codeprofile [16.01.2007 16:15:01]

#

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.

Heikki [16.01.2007 16:45:27]

#

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.

feenix [16.01.2007 16:45:39]

#

Mistähän tuo systemcontroller.exe voisi tietää mitä olet kirjoittanut tässä ohjelmassa olevaan tiedosto-muuttujaan kun et sitä sille kerro?

Codeprofile [16.01.2007 17:01:32]

#

Kiitos. Nyt toimii.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta