Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Brauche Hilfe bei Programmierung für Verzeichnisbrowser

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 < [ 2 ]
000
19.12.2006, 17:18 Uhr
weed



Tach, Leute!
Ich habe mal Lust, einen Verzeichnisexplorer als Console
Application zu schreiben.
Man soll per Eingaben wie chdir die Verzeichnisse wechseln
und per code [PfadZurTextdatei] den Text einer
Textdatei zeigen.

Das wollte ich zu Übungszwecken machen und schon habe
ich bei diesem kurzen Source hier ein Problem...

(windows.h ist includet für FindFirstFile - Für später)


C++:
#include <iostream>
#include <windows.h>
using namespace std;

int main (int argc, char *argv[]) {
    char* path = "C:/";
    
    // .....  Programmname und Copyright zuerst zeigen LOL
    cout << "--- Dateibrowser fuer Arme (c) by weed --\n" << endl;
    cout << "Dir> " << path << endl;
    

    char* eingabe;
    while (true) {
      cin >> eingabe;
      if (eingabe == "exit") {
        exit(0);
      }
    }

    return 0;
}


Undzwar, wenn ich etwas eingebe (egal ob exit oder was andres)
und auf die Return-Taste drücke, kommt ein
"Problembericht senden|nicht senden"-Fenster.
Was müsste ich hier beachten?

Edit

Habe jetzt


C++:
    char* eingabe;


umgeändert in


C++:
    char eingabe[200];


jetzt geht's. Aber warum? Und was passiert, wenn ich mehr als
200 Zeichen eingebe und return drücke?
--
lol Signatur lol

Dieser Post wurde am 19.12.2006 um 17:36 Uhr von weed editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.12.2006, 17:49 Uhr
weed




C++:
    char eingabe[200];
    while (true) {
      cin >> eingabe;
      if (eingabe == "exit") {
        exit(0);
      } else {
        cout << "Unverstaendliche Eingabe: " << eingabe << endl;    
      }
    }


Wieso kommt, wenn ich "exit" eingebe:
"Unverstaendliche Eingabe: exit"???
--
lol Signatur lol
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.12.2006, 17:53 Uhr
Soto



Weil du Arrays nicht mit dem ==-Operator vergleichen kannst.

Für strings gibt es eine Vergleichsmethode strcmp().
Bei char-Arrays kenne ich so etwas nicht. Ich würde also am ehesten die Arrays in Strings umwandeln und sie dann mit strcmp vergleichen.
--
ich versuche zu helfen, sorry wenn ich nen scheiß rede ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.12.2006, 17:58 Uhr
BoBtheREapER
kein job für nen BoB


oder du schreibst selber so eine methode. ist ja einfach nur ne schleife die jedes zeichen vergleicht.
--
"Zwei Dinge sind unendlich: Das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir nicht ganz sicher." - Albert Einstein
www.blue-xenon.de.vu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.12.2006, 18:29 Uhr
weed




C++:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <windows.h>
using namespace std;

int main (int argc, char *argv[]) {
    char* path = "C:/";
    
    // .....  Programmname und Copyright zuerst zeigen LOL
    cout << "--- Dateibrowser fuer Arme (c) by weed --" << endl << endl;
    cout << "Dir> " << path << endl;

    char eingabe[200];
    while (true) {
      scanf ("%s", &eingabe);
      if (strcmp(eingabe, "exit")) {
        exit(0);
      } else {
        printf ("Unverstaendliche Eingabe: %s", eingabe);    
      }
    }

    return 0;
}


immernoch...
--
lol Signatur lol
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.12.2006, 18:38 Uhr
Karldin Shinowa
Professional Noob


Warum verwendest du nicht Strings aus <string>??


C++:
#include <iostream>
#include <cstdio>
#include <string>
#include <windows.h>

using namespace std;

int main (int argc, char *argv[]) {
    string path = "C:/";
    
    // .....  Programmname und Copyright zuerst zeigen LOL
    cout << "--- Dateibrowser fuer Arme (c) by weed --" << endl << endl;
    cout << "Dir> " << path << endl;

    string eingabe;
    while (true) {
      cin>>eingabe;
      if (eingabe=="exit")) {
        exit(0);
      } else {
        cout<<"Unverstaendliche Eingabe:"<<eingabe;    
      }
    }

    return 0;
}


--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 19.12.2006 um 18:40 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.12.2006, 18:53 Uhr
weed



LOL das ist mir eben jetzt auch eingefallen und habs auch
so gemacht, aber danke.

Habe Probleme mit den ganzen datentypen in C++, habe vorher
alles in php und javascript geschrieben...

Edit

Problembericht senden|nicht senden.....


C++:
      if (eingabe=="exit")) {


Dabei habe ich hier die überflüssige 2te ) entfernt...

Edit

geht jetzt doch... danke...
--
lol Signatur lol

Dieser Post wurde am 19.12.2006 um 19:12 Uhr von weed editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.12.2006, 21:36 Uhr
weed




C++:
#include <iostream>
#include <stdio.h>
#include <string>
#include <windows.h>
using namespace std;

int main (int argc, char *argv[]) {
    // .....  Programmname und Copyright zuerst zeigen LOL
    cout << "--- Dateibrowser fuer Arme (c) by weed ---" << endl << endl;
    
    // .....  Verzeichnis-Pfad, von dem Dateien aufgelistet oder angelegt werden sollen. [Start-Pfad]
    string path = "C:/";

    string eingabe;
    while (true) {
      cout << "Dir> " << path << endl;
      getline (cin, eingabe);
      
      if (eingabe == "exit") {
        exit (0);
      } else if (eingabe == "files") {
        // .....  Trennstrich oben.
        cout << endl << "--- --- --- ---" << endl;
            
        // .....  Dateien im Verzeichnis auflisten.
        HANDLE fHandle;
        WIN32_FIND_DATA wfd;
        fHandle = FindFirstFile((path+"*").c_str(), &wfd); // [.] interessiert Keinen.
        FindNextFile (fHandle, &wfd); // [..] auch.
        while (FindNextFile(fHandle, &wfd)) {
          cout << wfd.cFileName << endl;
        }
        
        // .....  Trennstrich unten.
        cout << endl << "--- --- --- ---" << endl;
      } else {
        cout << endl << "???: " << eingabe << endl;    
      }
    }

    return 0;
}


Joah, Leute, sieht doch schonma sauber aus oder?
Danke für eure Hilfe.

Ahja: hat jemand zufällig einen Link parat, wo man die
anderen Properties der WIN32_FIND_DATA-Klasse
nachgucken kann?
--
lol Signatur lol

Dieser Post wurde am 19.12.2006 um 21:40 Uhr von weed editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.12.2006, 21:41 Uhr
Karldin Shinowa
Professional Noob


Bis auf das es
#include<cstdio> net stdio.h und
#include<string> ohne h heißt und
exit(0); eigentlich zu vermeiden ist JA

--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.12.2006, 21:55 Uhr
weed



Ne, das sollte schon stdio.h einbinden.
Das Lustige ist nur, dass weder eine Funktion noch ein
Objekt dadraus im ganzen Skript benötigt wird %)


C++:
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;

int main (int argc, char *argv[]) {
    // .....  Programmname und Copyright zuerst zeigen LOL
    cout << "--- Dateibrowser fuer Arme (c) by weed ---" << endl << endl;
    
    // .....  Verzeichnis-Pfad, von dem Dateien aufgelistet oder angelegt werden sollen. [Start-Pfad]
    string path = "C:/";

    string eingabe;
    int fnr;
    while (true) {
      cout << "Dir> " << path << endl;
      getline (cin, eingabe);
      
      if (eingabe == "exit") {
        exit (0);
      } else if (eingabe == "files") {
        // .....  Trennstrich oben.
        cout << endl << "--- --- --- ---" << endl;
            
        // .....  Dateien im Verzeichnis auflisten.
        HANDLE fHandle;
        WIN32_FIND_DATA wfd;
        fHandle = FindFirstFile((path+"*").c_str(), &wfd); // [.] interessiert Keinen.
        FindNextFile (fHandle, &wfd); // [..] auch.
        fnr = 0; while (FindNextFile(fHandle, &wfd)) {
          cout << "["<<fnr<<"] " << wfd.cFileName << "   -   " << wfd.nFileSizeHigh << endl;
          fnr++;
        }
        FindClose (fHandle);

        // .....  Trennstrich unten.
        cout << endl << "--- --- --- ---" << endl;
      } else {
        cout << endl << "???: " << eingabe << endl;    
      }
    }

    return 0;
}


Bessa?
--
lol Signatur lol

Dieser Post wurde am 19.12.2006 um 22:01 Uhr von weed editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: