text.txt aus ordner in ComboBox



  • hallo hab eine frage wegen ComboBox..

    Ich muss den namen der datei z.B lehrer.txt und schueler.txt
    in der combo box auflisten..
    also wenn ich auf die ComboBox klicke soll sie aufrollen und dann

    lehrer
    schueler

    darin stehen..und wenn man dann eine davon anklickt wird der text aus der .txt datei in ein memo oder so gelesen..
    das weiss ich wies geht..aber wie bekomme ich die .txt dateien in die combobox??

    thx, caro



  • Zum Beispiel so:

    cb ist die ComboBox
    Im OnShowEvent:

    cb->Clear(); //kannst du wahrscheinlich auch weglassen
    std::ifstream file("<hier den namen des textfiles einsetzen>");
    char buf[1000];
    while (file) {
      file.getline(buf,1000);
      String w(buf);
      if (w.Length()) {
        cb->Items->Add(w);
      } 
    }
    

    Sollte für deine Zwecke ausreichen.

    ciao,
    k



  • danke aber

    std::ifstream file("<hier den namen des textfiles einsetzen>");

    darf ich nicht..es muss die rauslesen, ohne das ich sie einlese..
    der benutzer kann ja eine neue .txt datei anlegen und diese soll es dann auch gleich finden, ohne das ich sie im quelltext eingeben muss



  • bitte, aber 😉

    deinen letzten beitrag verstehe ich nicht ganz.
    dann könnte das programm ja auch gleich alle .txt dateien auf
    dem rechner einlesen, das wäre vielleicht ein bischen viel, oder?

    Wie erfährt denn das programm, welche datei die richtige ist?

    ciao,
    k



  • also ich währe für die vorbereitete methode.

    ComboBox1->Items->LoadFromFile("lehrer.txt");
    

    und das wars auch schon.



  • konvenienz2 schrieb:

    bitte, aber 😉

    deinen letzten beitrag verstehe ich nicht ganz.
    dann könnte das programm ja auch gleich alle .txt dateien auf
    dem rechner einlesen, das wäre vielleicht ein bischen viel, oder?

    Wie erfährt denn das programm, welche datei die richtige ist?

    ciao,
    k

    es soll nur alle .txt. dateien aus dem festgelegten ordner
    textdateien/
    herauslesen..
    dort werden die textdateien hingespeichert und dort soll ich sie wieder rauslesen(da immer neue dazukommen und ich den quelltext ja nicht für jede neue .txt datei verändern will..
    gibt es da nix??



  • um alle txt dateien zu finden solltest du dich
    mal über

    FindFirst
    FindNext

    informieren...

    jenz



  • na toll das hatten wir noch nicht..naja mal sehen was ich finde

    trotzdem thx..



  • Hallo,
    Du must genau festlegen welche Dateien du anzeigen willst. Ich habe aus einer Datenbank die Dateinamen ausgelesen mit hilfe einer Schleife.
    Ich denke du kanst es genauso auch aus einem Ordner der Rheihe nachauslesen und dann mit DBComboBox->Items->Add(Variable oder LoadFromFile) anzeigen.
    Auf den nächsten eintrag wechselst du dann mit Next().



  • hallo..

    ich habe gestern noch den ganzen tag rumprobiert..und nix ist rausgekommen...
    hab mir aus ein paar beiträgen hier etwas rausgesucht..doch alles ohne erfolg

    int i;
    char name[512] = {0};
    ListBox2->Clear();
    GroupBox4->Visible=true;
    bool bGefunden = false;
    AnsiString datei = Edit1->Text;
    AnsiString b;
    
      AnsiString tmp = b;
      std::ofstream ofs(tmp.c_str());
      TSearchRec sr;
      AnsiString pfad;
      pfad +=Edit1->Text+ "\\";
      if (FindFirst(pfad + "*", faAnyFile, sr) == 0)
      {
        do
          {
           if ((sr.Name != ".")&&(sr.Name != ".."))
           {
            if(sr.Name.UpperCase().AnsiPos(datei.UpperCase()) != 0)
            {
            ListBox2->Items->Add(pfad + sr.Name);
            }
           }
          }
        while (FindNext(sr) == 0);
        FindClose(sr);
        }
      }
    
    /*for(i = 0; i < DATEI->Strings[i]->Count; i++)
    {
        if(DATEI->Strings[i].UpperCase().AnsiPos(datei.UpperCase()) != 0)
        {
            ListBox2->Items->Add(DATEI->Strings[i]);
            bGefunden = true;
        }
    }
    if(!bGefunden)
        {ShowMessage("nicht vorhanden");
    }
    */
    

    hier ein paar meiner versuche..
    wobei der untere ausgeklammerte sowieso nicht geht weil ich viele wichtige Sachen derweil rausgelöscht hab..

    doch funktioniren tuts nicht..
    es soll so funktionieren das es den Ornder auf vorhandene .txt Dateien überprüft und dann in jede Datei reinspringt und sie auf das gesuchte Wort durchsucht..
    das gesuchte Wort soll mit der Datei in der es gefunden wurde und dem Pfad der dazu gehört in der ListBox ausgegeben werden

    (BSP: in der .txt Datei steht c:\lehrer\kw\hallo.bmp
    und in der schueler.txt steht c:\schueler\ta04st\hallo_frau_kw.bmp
    wenn ich im Edit jetzt "hallo" eingebe soll es alle vorhandenen .txt dateien durchlaufen und c:\schueler\ta04st\hallo_frau_kw.bmp und c:\lehrer\kw\hallo.bmp in die ListBox schreiben..)

    gibt es dafür keine einfache umsetzung??
    bitte helft mir..muss es bis montag fertig haben 😞

    danke



  • es soll nun übrigens gleich alle .txt dateien durchlaufen..ohne das man vorher die.txt aus einer ComboBox wählt..es gibt nur noch ein Edit1 wo man des gesuchten Text reinschreibt und dann soll es automatisch alle gefundenen .txt dateien aus dem Ordner "Suche" durchsuchen..



  • Was zahlst Du mir, wenn ich Deine Hausaufgaben mache?

    Wieso kannst Du das nicht? Hausaufgaben dienen normalerweise zur Vertiefung des Unterrichtsstoffes. Also solltest Du in der Lage sein, das Problem zu lösen...

    Wenn Du in der BCB-Hilfe mal unter FindFirst nachgesehen hättest, hättest Du das Beispiel gefunden, das sich, mit wenig Aufwand, an dein Problem anpassen läßt:

    AnsiString asSearchPath = "c:\\temp\\";	// zu durchsuchendes Verzeichnis
    AnsiString asFileName = "*.txt";				// Dateityp
    if (!Edit1->Text.IsEmpty())  // nur ausführen wenn Edit1 nicht leer ist
    {
    	TSearchRec sr;	// Details zu TSearchRec stehen in der BCB-Hilfe
    	int iAttributes = 0;
    	iAttributes |= faAnyFile;
    	if (FindFirst(asSearchPath + asFileName, iAttributes, sr) == 0)
    	{
    		do
    		{
    			if ((sr.Attr & iAttributes) == sr.Attr)
    			{
    				// hier Suche in Datei durchführen
    			}
    		} while (FindNext(sr) == 0);
    		FindClose(sr);
    	}
    }
    

    Um Dir nicht den ganzen Spaß zu verderben, habe ich die Suche in der Datei und die Ausgabe in der ListBox rausgelassen.



  • es sind keine hausaufgaben..muss ein paar programme schreiben die ich vorgelegt bekommen hab un die "einfach" sein sollten..da ich viele Zensuren nachholen muss da ich wegen ner Krankheit des halbe jahr fehlte..

    naja das was für die einfach is habe ich aber no nie gehört..

    danke für die hilfe..



  • huhu..
    nochmal kurze frage.. ^^ srr

    if (FindFirst(asSearchPath + asFileName, iAttributes, sr) == 0)
        {
            do
            {
                if ((sr.Attr & iAttributes) == sr.Attr)
                {
                    OpenFile(char()asFileName);
                    if(datei.UpperCase().AnsiPos(datei.UpperCase()) != 0)
                    {
                     ListBox2->Items->Add(pfad + sr.Name);
                    }
                }
            } while (FindNext(sr) == 0);
            FindClose(sr);
        }
    

    in dieser Zeile

    OpenFile(char()asFileName);
    

    kommt der fehler

    [C++ Fehler] Unit1.cpp(49): E2121 ) fehlt beim Funktionsaufruf

    ????

    wieso??ich habe doch alles richtig geschlossen??
    seht ihr vielleicht ob ich irendwo noch eins vergessen hab??hab überall geguckt..finde aber nichts..

    dankeschön..



  • jetzt habe ich glaub großen mist gebaut...

    hab also rumprobiert und rumprobiert heraus kam:

    [C++ Fehler] Unit1.cpp(50): E2121 ) fehlt beim Funktionsaufruf <<-immernoch da..
    zusätzlich:
    [C++ Fehler] Unit1.cpp(51): E2316 'name' ist kein Element von 'TSearchRec'
    [C++ Fehler] Unit1.cpp(61): E2308 Bei do-Anweisung fehlt das Schlüsselwort while
    [C++ Fehler] Unit1.cpp(80): E2089 Bezeichner 'schlieen1Click' darf keinen Typqualifizierer besitzen
    [C++ Fehler] Unit1.cpp(95): E2134 Abschließendes } fehlt <<-obwohl alles was offen ist geschlossen wird...

    werden immer mehr fehler..anstatt das mal einer behoben wird..kommt immer einer dazu..



  • Statt FileOpen: Schau Dir mal TStringList an. Und dort insbesondere die Methoden LoadFromFile() die Eigenschaft Text. Die Eigenschaft Text ist vom Typ AnsiString. Dort solltest Du einen Blick auf die Methode AnsiPos() werfen.



  • okay da hatte ich wohl den falschen ansatz 🙄

    die fehler hab ich jetz wegbekommen..
    probier es jetz mal so aus.. 🙂

    thx


Anmelden zum Antworten