Existiert Wort in Datei?



  • Hi ihr,

    Habe ein einfaches Programm geschrieben, was eine Datei nach einem Wort durchsuchen soll.
    Es soll in meinem Fall die Datei nach dem einfachen Wort '</head>' durchsucht werden.
    Ist dem so, soll ein Button die Beschriftung 'Ja' bekommen- wenn nicht 'nein'.

    Memo1->Clear();
       vector<std::string> liste;
       if(open->Execute())
       {
          btnkonvert->Enabled = true;
          String dateipfad = open->FileName;
          lblpath->Caption = dateipfad;
          fstream datei(dateipfad.c_str(), std::ios::in);
          std::string line, word;
          while(getline(datei, line))
          {
             istringstream stream(line);
             while(stream >> word)
             {
                String string2 = word.c_str();
                liste.push_back(word);
                Memo1->Lines->Add(string2);
             }
          }
          std::vector<std::string>::iterator start = liste.begin();
          std::vector<std::string>::iterator ende = liste.end();
          std::vector<std::string>::iterator stelle = find(start, ende, "</head>");
          if(stelle == ende)
             btnkonvert->Caption = "NEIN";
          else
             btnkonvert->Caption = "JA";
    
       }
       else
       {
    
       }
    

    Bei manchen Dateien funktioniert mein Programm- in manchen jedoch auch nicht. Wenn ich beispielsweise eine Exceldatei im HTML-Format abspeichere findet er das </head> nicht obwohl es ganz alleine steht.

    In einem Memo gebe ich zum Test die Datei aus und auch dort steht '</head>' in einer Zeile.
    Dennoch steht auf dem Button "Nein".

    Ich weiß echt nicht mehr woran das liegen kann- ich hoffe jemand von euch hat eine Idee 😉

    cya
    David



  • Hallo

    TStringList* datei = new TStringList;
    datei->LoadFromFile(...);
    if (datei->Text.Pos("</head>") == 0)
      // nicht vorhanden
    else
      // vorhanden
    delete datei;
    

    bis bald
    akari



  • Bei den Dateien, bei denen es nicht geht, solltest Du mal prüfen, ob die eventuell Unicode-codiert sind.



  • Dummerweise sind sie alle ANSI-Codiert- also wisst ihr in meinem code auch nicht, worans liegen kann?
    Akari hat zwar was Funktionierendes gepostet aber das funktioniert ja auch zum Durchsuchen NUR im Borland.
    Und ich würd das irgendwie gern mit der Standardbibliothek und Algorithmen lösen... das ist dann hier wohl auch der falsche Forenteil 😢



  • Warum nimmst du zum Suchen im String eigentlich std::find aus algorithm und nicht die viel einfacher zu verwendende Memberfunktion von std::string?



  • Dann löse zu Testzwecken doch das find auf. Gehe mit dem iterator durch die einzelnen Strings und vergleiche mit == ob der String "<head>" passt. Mit dem Debugger solltest Du doch das Problem finden können.



  • Hallo

    User vom Borland schrieb:

    Akari hat zwar was Funktionierendes gepostet aber das funktioniert ja auch zum Durchsuchen NUR im Borland.
    Und ich würd das irgendwie gern mit der Standardbibliothek und Algorithmen lösen... das ist dann hier wohl auch der falsche Forenteil 😢

    Ja dann hättest du im C++ Forum posten sollen.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten