Wie kann man "Suchen"?



  • Jo erstmal ein krfätiges "Moin!" von mir in die Runde!

    Ich benutze den Bloodshed C++ Compiler und möchte gerne wie mit der Windows suche suchen...

    Leider weiß ich nicht wie - hab bis jetzt nur Mathe Progs geschrieben...

    Gegoogled und hier die Suchefunktion hab ich schon benutzt.

    Ich möchte nur bestimmte verzeichnisse durchsuchen (das programm soll für meine mutter sein!) und zwar nach *.doc dateien...

    anscheinend hat microsoft irgendetwas dafür schon rausgebracht aber das kann ich nicht einbinden - vllt geht das ja nur mit nem ms produkt 😕

    wenn es geht bitte etwas anfängerfreundlich erklären oder links posten, die anfänger freundlich sind (auch in english..)

    jo also nochmal zusammenfassend:

    Sucheprogramm:
    Durchsucht bestimmte verzeichnisse (,die ich vorher einbinde)
    zeigt nur *.doc dateien an
    am besten wäre es wenn man sie direkt ausführen könnte...

    ist das mit dem kostenlosen bloodshed Dev C++ möglich?

    am besten gibt meine z.b. ein "hans" und es werden dann alle dateien aus den verzeichnissen angezeigt, die das wort hans enthalten ...

    übrigens: ich habe meine icq und msn addy hier hinterlassen...

    Gruß
    CSMaster2000

    //edit: das prog sollte unter Windows me und xp funktionieren..



  • ja klar ist das möglich.. schau dir mal die fstreams an mit ifstream.. lade eine zeile der datei und vergleiche

    string x;
    in pos;
    x = "haha";
    pos = x.find("haha");
    

    das gibt dir dann die position von haha...

    mfg burnner



  • und in der FAQ steht was über alle Dateien finden in nem Verzeichnis und dann gabs hier irgendwo noch nen beitrag, wo gefragt wurde, wie man in nem ganzen Verzeichnisbaum suchen kann (rekursiv)



  • burnner schrieb:

    ja klar ist das möglich.. schau dir mal die fstreams an mit ifstream.. lade eine zeile der datei und vergleiche

    string x;
    in pos;
    x = "haha";
    pos = x.find("haha");
    

    das gibt dir dann die position von haha...

    mfg burnner

    hmm gut --

    aber wie kann ich dann angeben wo das "haha" gesucht wird...

    und - bitte versteh das ich bin anfänger 😃 - x ist jetzt da definiert.. kann ich da >>cin x; eingeben?

    also meine mutter soll dann was eingeben und ich sag dem programm >>cin x

    x wäre dann das was was sie eingibt .. nur warum ist das da definiert...

    und kann ich in *.doc dateien suchen?

    Gruß
    CSMaster2000



  • Hi!

    Dafür benötigst du die WinAPI, MFC oder VCL.
    Mit MFC kann man sich eine Liste von Dateien liefern lassen mit einer bestimmten Dateiendung. Wenn du mehrere Verzeichnisse und auch deren Unterverzeichnisse auslesen willst, kannst du das rekursiv machen.

    Hier habe ich einen Code mit den MFC der eine Liste mit den Dateinamen liefert:

    std::list<std::string> tmp;
    int bWorking = findFile();
    CFileFind finder;
    while(bWorking)
    {
    	bWorking = finder.FindNextFile();
    	if(!isDirectory())
    		tmp.push_back(static_cast<std::string>(finder.GetFileName()));
    
    }
    

    Oder das direkte suchen einer Datei:

    string path = "C:\\";
    string fileend = "bla.doc";
    finder.FindFile((path+"\\"+fileend).c_str());
    

    Code-Hacker



  • Code-Hacker schrieb:

    Hi!

    Dafür benötigst du die WinAPI, MFC oder VCL.
    Mit MFC kann man sich eine Liste von Dateien liefern lassen mit einer bestimmten Dateiendung. Wenn du mehrere Verzeichnisse und auch deren Unterverzeichnisse auslesen willst, kannst du das rekursiv machen.

    Hier habe ich einen Code mit den MFC der eine Liste mit den Dateinamen liefert:

    std::list<std::string> tmp;
    int bWorking = findFile();
    CFileFind finder;
    while(bWorking)
    {
    	bWorking = finder.FindNextFile();
    	if(!isDirectory())
    		tmp.push_back(static_cast<std::string>(finder.GetFileName()));
    				
    }
    

    Oder das direkte suchen einer Datei:

    string path = "C:\\";
    string fileend = "bla.doc";
    finder.FindFile((path+"\\"+fileend).c_str());
    

    Code-Hacker

    so - wo bekomm ich die her und kann ich die auch benutzen oder bracuh ich ein teuren microsoft compiler dazu?

    btw:
    man das forum ist schnell ^^

    Gruß
    CSMaster2000



  • ups ich meinte du willst in einer datei suchen^^



  • Hi!

    Um die MFC benutzen zu können brauchst du Visual Studio. Dies gibt es allerdings mittlerweile für die Kommandozeilenebene kostenfrei (Direktdownload: http://download.microsoft.com/download/3/9/b/39bac755-0a1e-4d0b-b72c-3a158b7444c4/VCToolkitSetup.exe). Hierbei handelt es sich um das Visual C++ .NET Toolkit 2003, mit Compiler und Linker. Um die MFC verwenden zu können musst du die Datei die Datei afx.h einbinden (#include <afx.h>).

    Code-Hacker



  • burnner schrieb:

    ups ich meinte du willst in einer datei suchen^^

    jein

    ich will in dateien suchen, die sich in verschiedenen ordnern befinden..

    also beispiel:

    im Ordner C:\Docs\ befinden sich die ordner "1" und "2" und darin *.doc dateien (also word dateien) und ich will, dass die ordner 1 und 2 nach *.doc dateinen durchsucht werden und mir die dateien angezeigt werden, die das eingebene wort (bsp: hans) enthalten

    Gruß
    CSMaster2000



  • Code-Hacker schrieb:

    Hi!

    Um die MFC benutzen zu können brauchst du Visual Studio. Dies gibt es allerdings mittlerweile für die Kommandozeilenebene kostenfrei (Direktdownload: http://download.microsoft.com/download/3/9/b/39bac755-0a1e-4d0b-b72c-3a158b7444c4/VCToolkitSetup.exe). Hierbei handelt es sich um das Visual C++ .NET Toolkit 2003, mit Compiler und Linker. Um die MFC verwenden zu können musst du die Datei die Datei afx.h einbinden (#include <afx.h>).

    Code-Hacker

    404 - file not found!

    Gruß
    CSMaster2000

    //edit: habs selebr gefunden.. danke



  • Hi!

    Das mit dem Suchen in einer Doc-Datei geht mit Standard-C++ nicht. Da kommt dann beispielsweise sowas raus (habe es eben getestet):
    ð¤◄Óí▒
    Achja Informationen zum VC++ Toolkit findest du hier:
    http://msdn.microsoft.com/visualc/vctoolkit2003/

    Code-Hacker





  • Code-Hacker schrieb:

    Hi!

    Das mit dem Suchen in einer Doc-Datei geht mit Standard-C++ nicht. Da kommt dann beispielsweise sowas raus (habe es eben getestet):
    ð¤◄Óí▒
    Achja Informationen zum VC++ Toolkit findest du hier:
    http://msdn.microsoft.com/visualc/vctoolkit2003/

    Code-Hacker

    und mit dem toolkit?

    Gruß
    CSMaster2000



  • Hi!

    Das Toolkit sind ein Compiler und Linker damit du die MFC verwenden kannst. Ich weiß nicht ob die MFC Doc-Dateien unterstützen. Ich weiß das es .NET kann (was du mit dem Toolkit theoretisch auch verwenden könntest, allerdings müsstest du dich dann in managed C++ einarbeiten).

    Komisch, bei mir funktioniert der von mir genannte Link.

    Code-Hacker



  • also ich hab mir das nun runtergeladen...

    so anscheinend funktionieren die datein net mit meinem bloodshed dev-c++ zusammen - ok also habe ich die search.cpp erstellt um darin zu schreiben...

    nur leider kann ich das net kompilieren...

    er meint immer er würde die uostream.h net finden...

    also es wäre toll wenn mir jmd erklären könnte was ich nun machen soll

    Gruß
    CSMaster2000



  • ich werd das gefühl net los, dass mir dateien fehlen mit dem vc toolkit (bsp: die afx.h!!!)

    also nochmal:

    kann ich irgendwie ohne ms zusätze unter cplusplus suchen?

    Gruß
    CSMaster2000



  • Wenn ihr innerhalb von Dateien suchen wollt, muesst ihr auch wissen, welches
    Dateiformat diese Datei hat, sprich, wie ist der Datei aufgebaut. .doc Dateien
    sind keine Textdateien, es ist nur natuerlich, dass nichtlesbares Zeug rauskommt,
    wenn man die Datei normal liesst.

    Beschreibungen von Dateiformaten kannst du z. B. hier bekommen:

    http://www.wotsit.org/

    oder hier:

    http://www.myfileformats.com/

    Alternativ kann man mal nach Librarys suchen, welche entsprechende Formate
    bereits lesen koennen.

    mfg
    v R



  • virtuell Realisticer schrieb:

    Wenn ihr innerhalb von Dateien suchen wollt, muesst ihr auch wissen, welches
    Dateiformat diese Datei hat, sprich, wie ist der Datei aufgebaut. .doc Dateien
    sind keine Textdateien, es ist nur natuerlich, dass nichtlesbares Zeug rauskommt,
    wenn man die Datei normal liesst.

    Beschreibungen von Dateiformaten kannst du z. B. hier bekommen:

    http://www.wotsit.org/

    oder hier:

    http://www.myfileformats.com/

    Alternativ kann man mal nach Librarys suchen, welche entsprechende Formate
    bereits lesen koennen.

    mfg
    v R

    nana ---

    also wenn ich doc dateien mit nem normalen editor öffne kann man den text lesen!

    ich weiß aber nicht wie ich mit normalen c++ (kein ms visual c++ oder so) in dateien suchen kann...

    Gruß
    CSMaster2000



  • Hi!

    Ich glaube MS bietet etwas zum auslesen von DOC-Dateien. Wie gesagt, es gibt das auf jedenfall für .NET was man mit dem Toolkit ja auch verwenden kann.
    Um die MFC verwenden zu können musst du nebenbei noch die Verwendung von MFC aktivieren. Ich weiß aber leider nicht wie man das bei der Kommandozeile angibt, da man dies im VS in den Konfigurationseinstellungen macht.
    Aber eigentlich müsste man dazu was in der MSDN finden oder so.

    Außerdem solltest du mal nach der afx.h suchen. Diese müsste in etwa dieser Ordnerhierarchie zu finden sein:
    .......\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include

    Code-Hacker



  • Soweit ich weiß gibt es die MFC nur in Verbindung mit der IDE Visual C++.

    Zweitens du kannst ein MFC Programm nur mit einem Microsoft Compiler übersetzen welcher die ganzen MFC Libraries besitzt die du dazu benötigst.

    Du möchtest nach Dateien suchen, dann würd ich dir raten mit Boost::FileSystem (hieß doch so, oder?) Alle Dateinamen auszulesen und mit dem Suchbegriff zu vergleichen.
    Boost ist eine Library und gibt es auf www.boost.org


Log in to reply