Need dev-c++ freak - einfache Sache ;)



  • Zuerst einmal ein "Hello World" ins Forum... is der alt? Naja egal, hab vor wenigen Tagen mit C++ angefangen, weil mein Chef ne .exe gebraucht hat die mit IO arbeiten soll, und ich dachte mir Basic wird langsam gefährlich für Win7 xD
    Das Programm soll aus einem best. Ordner alle z.b. .txt Dateien auf ein bestimmtes Wort prüfen. Wird das gesuchte Wort gefunden kommt es in eine Excel Tabelle.
    Also ich hab im Netz gesucht und gesucht, aber immer nur häppchenweiße bekommen was ich wollte...bla und blub ihr wisst was dann, zamgekeilt bis alles auf einander abgestimmt ist, irgendwie 😉 Das ganze Ding läuft soweit wie ichs mir vorstell, allerdings würde ich gerne wissen,da ich vermute, dass es so viel einfacher gehen würde ^^, was man verbessern kann. Ach was ich gerade bemerke, sorry wegen kommentarlosem code =(, und um methoden mit übergabeparameter und so würd ich mich rießig freuen 🙂

    gruß mexx

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <cstdlib>
    #include <windows.h>
    #include <dirent.h>
    #include <sys/types.h>
    using namespace std;             //__________________________________//                                        
                                         //                                  //
    int main()                          // --- ---  KONFIGURATION   --- --- //
    {                                  //__________________________________//
    
      std::ofstream outfile("_Ausgabe2.xls"); // Name: Ausgabedatei
      std::string folderPath = "./";  // Folgenden Ordner durchsuchen  <- "./" für aktuelles Verzeichnis 
      std::string files = ".txt"; // Durchsuche Ordner nach diesen Dateien (!! Endung !!)
      std::string findMe = "hallo"; // Durchsuche Dateien nach folgender Zeichenkette
      std::string strName;  
    
    DIR *dir;
    struct dirent *dirzeiger;
    
    if((dir=opendir(folderPath.c_str())) != 0)
    while((dirzeiger=readdir(dir)) != 0) 
     {
    
      strName = ("%s\n",(*dirzeiger).d_name);
    
      if(strName.length()>files.length()) 
      {
        int i = (strName.length()) - files.length();
        if( strName.substr(i, files.length()).compare(files.c_str())==0) 
        { 
          std::ifstream infile;                                                   
          infile.open(strName.c_str());
          if(infile)
          printf("%s\n",strName.c_str());
          std::string strLine;         
          while( std::getline(infile, strLine) )        
          {   
           int j = 0;   
           while ( j < strLine.length() ) 
           {         
            if( strLine.substr(j, findMe.length()).compare(findMe.c_str())==0)
            {         
              outfile << strLine.substr(0) << "\n"; 
              j = strLine.length();           
            }
            j++; 
           }       
          }
           infile.close();
           outfile << "\n\n\n";
        }
      }   
    
     }       
       outfile.close();    
       system("PAUSE");
       return EXIT_SUCCESS;
    }
    


  • Was für ein grässlicher C/C++ Mix...
    Hast du gestern angefangen zu programmieren?



  • Ich würde dir raten, dir einmal boost anzusehen. Dort hast du Iteratoren für Files, die alles viel einfacher gestalten 🙂



  • nich gestern,vorgestern am montag ^^
    ich weiß selbst dass das übel ist, ich kenn den code in vielen andren sprachen,also sag mir lieber wie das ding kürzer läuft,bitte 🙂



  • Verzeichnisstrukturen durchsuchen geht afaik nicht mit Standard-C++, zu dem Teil kann ich nichts sagen. Ich kenne nur die Windows-Variante mit FindFirstFile()/FindNextFile() - bei der könntest du sogar Suchfilter angeben und dir den Namensvergleich ersparen.

    Aber die Vergleichstbedingungen sind imho ein wenig umständlich - std::string beherrscht auch Vergleiche mit == und Teilstring-Suche per find():

    if( strName.substr(i, files.length()) == files.c_str() ) 
        { 
          std::ifstream infile;                                                   
          infile.open(strName.c_str());
          if(infile)
            printf("%s\n",strName.c_str());
          std::string strLine;         
          while( std::getline(infile, strLine) )        
          {   
            int j = 0;   
            if(strLine.find(findMe)!=string::npos)
            {         
              outfile << strLine.substr(0) << "\n"; 
            }
          }
          infile.close();
          outfile << "\n\n\n";
        }
    


  • mexxville schrieb:

    also sag mir lieber wie das ding kürzer läuft,bitte 🙂

    Schau dir mal RAII, implizite Konvertierungen, Operator-Priorität, Namensbereiche, Codestil (vor allem Einrückungen), Konstruktoren/Destruktoren und die Standardbibliothek (das ist das Ding, dass du vergewaltigst) an.



  • Wenn du mir sagst, wie ein xls File aufgebaut ist + was da jetzt genau hinein geschrieben werden muss, überleg ich mir vielleicht dir zu helfen 🤡



  • Beides using namespace std; und std::string im Code geht schon mal nicht. Lösch lieber "using ...". dirent.h mag ich nicht besonders, da man die dort verwendeten Funktionen sicherer und C++-näher selbst implementieren kann.

    CStoll schrieb:

    Ich kenne nur die Windows-Variante mit FindFirstFile()/FindNextFile() - bei der könntest du sogar Suchfilter angeben und dir den Namensvergleich ersparen.

    Etwas Vernünftigeres gibt es auch nicht.

    CStoll schrieb:

    Aber die Vergleichstbedingungen sind imho ein wenig umständlich - std::string beherrscht auch Vergleiche mit == und Teilstring-Suche per find():

    Lustigerweise bildet der ==-Vergleich den größten Angriffspunkt bei der Kritik.



  • windows variante? sprich vc++? an und für sich brauch ich es sowieso nur unter windows ebene. wenn du nen code da ready hättest 😉 meine pixel wärn bereit 😃 aber wenn nicht ne,mach dir keinen stress.
    für dem chef seine zwecke reicht es ^^ muss ja keine xxGB dateien verarbeiten wollte dennoch fragen wo man ressourcen sparen kann und naja, für den schrecken den ich jetzt jedem c/c++ coder eingejagt hab übernehm ich keine verantwortung xD

    allerdings will ich noch sehen wie EOutOfResources das gecodet hätte 😉
    du hast gesagt das ist mist,also zeig mir wies richtig geht,sonst hät ich wohl kaum dieses thema eröffnet und nach hilfe gebeten,bin hier um was zu lernen 😉

    gruß mexx



  • 314159265358979 schrieb:

    Wenn du mir sagst, wie ein xls File aufgebaut ist + was da jetzt genau hinein geschrieben werden muss, überleg ich mir vielleicht dir zu helfen 🤡

    danke für diesen wertvollen kommentar ms.pi*g*
    das ist typisch nicht selbst denker 😛 ich hab einige parameter ausprobiert hat nicht geklappt,jetzt schreib ich halt ein vb script dazu.
    mussu halt nachdenken jungge xD

    an alle andren danke 😃



  • Sagen wirs so, ich hab weder Lust, deinen hässlichen Code zu durchsuchen, noch deinen schlecht formulierten Beitrag 😉



  • brauchst nicht den code zu durchsuchen,ein einfaches vb makro reicht,
    es soll von zeile a bis 'n' den Inhalt auslesen und in eine tabelle schreiben ( 'n' ist die erste Zeile ohne Inhalt,danach kommen nochmal zwei leere zeilen und dann soll er nen neues tabellenblatt erstellen und den nächsten block reinschreiben.



  • Wie viel in der Stunde?



  • du bistn juter coder und frägst mich für sowas billiges nach nem stundenlohn??? xDDD nein danke,raus aus meinem haus -.- wer dafür über ne stunde braucht....



  • mexxville schrieb:

    du bistn juter coder und frägst mich für sowas billiges nach nem stundenlohn???

    Sonst noch was? 😡
    Du kannst mich natürlich auch für das Projekt mit 'nem fixen Preis bezahlen 😉



  • EOutOfResources schrieb:

    mexxville schrieb:

    du bistn juter coder und frägst mich für sowas billiges nach nem stundenlohn???

    EOutOfResources schrieb:

    Sonst noch was? 😡

    ja nu ich muss sagen da schwiez is schön 😛

    EOutOfResources schrieb:

    Du kannst mich natürlich auch für das Projekt mit 'nem fixen Preis bezahlen 😉

    Ja klare,wenn du mir zeigen würdest was du drauf hast hät ich vielleicht das ein oder andere für dich,es geht um so ne wawi software( oder wiso? ) warenwirtschaft halt. daten auslesen in datenbanken speichern usw( was ich weiß über ne normale com schnittstelle).
    kannst ja ma pm schreiben,jeder andre der was kann und bissl was verdienen will auch 😉



  • Also willst du das selber nicht mehr machen oder wie?



  • [gelöscht] diese verdammte Verbindung



  • Sieht nicht danach aus - wenn du nichts anbietest, bekommst du hier nur Tipps, mit denen du deine Probleme selber lösen kannst. Wenn du fertige Programme benötigst, erwarten die meisten hier auch entsprechende Gegenleistungen 😃



  • na ich werd mich da dransetzen wenn ich bis morgen sonst nix hab,das muss erstma fertig werden 😉 aber das mit der schnittstelle.. ^^ die zeit hab ich nich ^^


Anmelden zum Antworten