Datei enlesen in Combobox



  • Halle .
    Ich habe ein kleineres Problem . Ich habe ein Programm geschriebn mit der ich mehrere Sprachdateien habe und einlesen möchte . wenn ich es per hand zuweise funktioniert dieses.

    1. Problem Ermitteln wiviele *.ini dateien im Ordner Language sind
    2. Die Namen der Datei z.b. english.ini ohne ini in eine Combobox zur Auswahl einlesen

    Wäre für Informationen Dankbar



  • Schau dir mal in der Hilfe Struktur TSearchRec an, damit kannst du Ordner nach Dateien (,etc...) durchsuchen. (PS: An den Ordneraufbau denken und die 'Dateien' '..' und '.' abfangen.) Weitere interessante Frunktionen in diesem Zusammenhang: FindFirst(),FindNext(),FindClose()

    Den Dateinamen bekommst du als AnsiString zurück.

    Dort kannst du dann einfach sagen:

    AnsiString Dateiname;

    Dateiname=Dateiname.SubString(0,Dateiname.Pos(.));

    Damit bekommst du dann nur noch den Dateinamen zurück ohne .ini

    Greets 😉



  • Ich habe es jetz so gemacht habe auch 2 Dateien im Ordner aber warum liest er nur 1 Aus und trägt sie rein und dann bleibt das feld auch leer wenn ich das programm öffne gebe ich es bei Text an zeigt er es an hmmm.

    TSearchRec sr;
       AnsiString Dir,Lwert,wert;
       Dir="language\\";
       bool res = true;
    
       if(FindFirst(Dir+"*.ini",0,sr)== 0)
       {
    	  while(!FindNext(sr)&& res)
    	  {
    		 wert = sr.Name.SubString(0,5);
    		 Lwert = ComboBox1->Items->Add(wert);
    		 if(sr.Name!=".." && sr.Name!=".")
    			res=false;
    	  }
    
       }
       FindClose(sr);
    


  • Hab deinen Code etwas angepasst.

    Sollte nun funzen.

    Greetz 😉

    TSearchRec sr; 
       AnsiString Dir,Lwert,wert;
       Dir="language\\"; 
       bool res = true; 
    
       if(FindFirst(Dir+"*.ini",0,sr)== 0){
            if(sr.Name!=".." && sr.Name!="."){
                    wert = sr.Name.SubString(0,sr.Name.Pos(".")-1);
                    Lwert = ComboBox1->Items->Add(wert);
            }
    
            while(!FindNext(sr)){
                    if(sr.Name!=".." && sr.Name!="."){
                            wert = sr.Name.SubString(0,sr.Name.Pos(".")-1);
                            Lwert = ComboBox1->Items->Add(wert);
                    }
            }
    
       } 
       FindClose(sr);
    


  • Beste dank es funktioniert supi danke danke danke für die schnelle hilfe



  • Hab den Code noch eben vereinfacht:

    eine fußgesteuerte Schleife bietet sich hier nämlich an:

    TSearchRec sr; 
       AnsiString Dir,Lwert,wert;
       Dir="language\\"; 
    
       if(FindFirst(Dir+"*.ini",0,sr)== 0){
            do{
                    if(sr.Name!=".." && sr.Name!="."){
                            wert = sr.Name.SubString(0,sr.Name.Pos(".")-1);
                            Lwert = ComboBox1->Items->Add(wert);
                    }
    
            }while(!FindNext(sr));
    
       }
       FindClose(sr);
    

Anmelden zum Antworten