Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Solange wiederholen, bis Eingabe korrekt...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.02.2008, 20:27 Uhr
~Kalle1985
Gast


Hallo Zusammen,

ich möchte gerne in meiner main() Methode mit einer Schleife beginnen, die dem User bei falscher Eingabe eines Pfades(mit falsch meine ich: ein oder mehrere Slashes anstatt ein oder mehrere Backslashes benutzt) darauf hinweist, dass er/sie einen Fehler gemacht hat und ihm/ihr solange eine neue Chance zur Eingabe des Pfades ermöglicht, wie blöd der User halt ist :-)...Warum das ganze?! Soll erst mal nicht wichtig sein. Weiß auch das beide Varianten vom System erkannt werden, um eine Textdatei zu öffnen...

Mein Problem ist es aber, das nach Verlassen der Schleife, die Variable 'quelldatei' nicht mehr sichtbar ist!!! Warum??? Weiß jmd. was ich tun muss?


C++:
int main() {

    bool gefunden = true;
    
    //while (gefunden) {
        
        cout << "Bitte geben Sie die einzulesende Quelldatei "
                "mit Pfad an: " << flush;
        cin.get(cEingabe, 150);
        ifstream quelldatei(cEingabe, ios_base::in);
        pfad = cEingabe;
        /*
        if (pfad.find("/") >= 0 && pfad.find("/") <= pfad.length()) {
    
            cout << "\n\nBitte den Pfad nicht mit '/' "
                    "sondern mit '\\' aufbauen!\n" << flush;
            system("Pause");
        } else {
        
        gefunden = false;
        }
    }*/

    pfad = pfad.substr(0, pfad.find_last_of('\\') + 1);
    
    if (quelldatei.good()) {          // <<< ab hier ist 'quelldatei' nicht mehr sichtbar!

             //...weiterer Code...



Bin dankbar für jede Hilfe!!! :D
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.02.2008, 20:31 Uhr
Kalle 1985



so,

ich nochmal, hab was vergessen zu editieren...hier der "richtige" Code...^^


C++:
int main() {

    bool gefunden = true;
    
    while (gefunden) {
        
        cout << "Bitte geben Sie die einzulesende Quelldatei "
                "mit Pfad an: " << flush;
        cin.get(cEingabe, 150);
        ifstream quelldatei(cEingabe, ios_base::in);
        pfad = cEingabe;
        
        if (pfad.find("/") >= 0 && pfad.find("/") <= pfad.length()) {
    
            cout << "\n\nBitte den Pfad nicht mit '/' "
                    "sondern mit '\\' aufbauen!\n" << flush;
            system("Pause");
        } else {
        
        gefunden = false;
        }
    
    pfad = pfad.substr(0, pfad.find_last_of('\\') + 1);
    
    if (quelldatei.good()) {          // <<< ab hier ist 'quelldatei' nicht mehr sichtbar!

             //...weiterer Code...



Achja, wenn ich die Schleife (so wie oben) auskommentiere, klappt alles...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.02.2008, 01:20 Uhr
xXx
Devil


Ganz einfach. Du verlässt durch die '}' hinter gefunden = false; den Scope in dem "quelldatei" gültig ist.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.02.2008, 17:43 Uhr
Kalle 1985



Jaja, nur soll ab 'if (quelldatei.good()) {' der weitere code nicht in die schleife mit hinein.
Oder was meinst du jetzt genau?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.02.2008, 18:01 Uhr
xXx
Devil


Naja, warum legst du nicht einfach das quelldatei-Objekt ein wenig später an?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
11.02.2008, 20:40 Uhr
Kalle 1985



Hmm...wieso später anlegen?
Müsste das Objekt eigentlich früher anlegen...aber egal...
ich probiers mal weiter...wenn ich die Lösung hab, poste ich die mal rein...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
11.02.2008, 20:57 Uhr
xXx
Devil



C++:
int main()
{
    bool found(false);
    
    while (found == false)
    {
        std::cout << "Bitte geben Sie die einzulesende Quelldatei mit Pfad an: " << std::flush;
        std::string path;
        std::getline(std::cin, path);

        if ((found = (path.find("/") == std::string::npos)) == false)
            std::cout << "\n\nBitte den Pfad nicht mit '/' sondern mit '\\' aufbauen!" << std::endl;
    }
    
    std::ifstream file_stream(path.c_str());
    if (!file_stream)
    { std::cerr << "FEHLER: Datei konnte nicht geöffnet werden!" << std::endl; return 1; }

    path = path.substr(0, path.rfind("\\") + 1);
}
in path steht der pfad und file_stream ist der Stream für die Datei ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
13.02.2008, 15:38 Uhr
Kalle 1985



Jo, danke...habs hinbekommen.
War etwas kurzsichtig von mir ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: