Daten aus einer Textdatei in ein Edit laden



  • Hast recht,

    gebe zu, ich bin zu blöd dieses so zu machen.

    Also fallst noch Jemand eine Tipp hätte, dann bitte Antworten



  • Probier mal das hier:

    ListBox1->Clear();
    int x = 0;
    int y = 0;
    String SubStr;
    while (x < Edit1->Text.Length())
            {
             SubStr = Edit1->Text.SubString(x,1);
             if (SubStr == " ")
                    {
                     ListBox1->Items->Add(Edit1->Text.SubString(y,x - y));
                     x = x + 1;
                     y = x;
                    }
             x = x + 1;
            }
    ListBox1->Items->Add(Edit1->Text.SubString(y,x - y + 1));
    


  • String explode(String &source,char del,int pos)
    {
       int i=1,lp=1;
       while(i<=source.Length()&&pos)
       {
          if(source[i]==del)
          {
             pos--;
             if(pos) lp=i+1;
          }
          i++;
       }
       if(i>source.Length())i++;
       return source.SubString(lp,i-lp-1);
    }
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TStringList *li=new TStringList();
    li->LoadFromFile("text.txt");
    TEdit *edits[3]={Edit1,Edit2,Edit3};
    int pos=0;
    while(pos<li->Count&&explode(li->Strings[pos],' ',1)!=ComboBox1->Text) pos++;
    if(pos<li->Count)
    {
       for(int i=0;i<3;i++)
       {
          edits[i]->Text = explode(li->Strings[pos],' ',i+2);
       }
    }
    delete li;
    }
    


  • Ich habe Probleme an dieser Stelle:

    while(pos<li->Count&&explode(li->Strings[pos],' ',1)!=ComboBox1->Text) pos++;

    undefinierte Funktion expolde

    Ich benutze Borland C++Builder5.0, diesen Befehl gibt es nicht.



  • HAb es jetzt mal so gemacht, sehr sehr primitiv, aber funktioniert fast:

    void __fastcall TForm1::ComboBox4Change(TObject *Sender)
    {
    if (ComboBox4->Text=="NYY 4x 1,5mm²"){Rw=14.47 ;XL=0.115 ;}
    else if (ComboBox4->Text=="NYY 4x 2,5mm²"){Rw=8.71 ;XL=0.110 ;}
    else if (ComboBox4->Text=="NNY 4x 4,0mm²"){Rw=5.45 ;XL=0.107 ;}
    else if (ComboBox4->Text=="NYY 4x 6,0mm²"){Rw=3.62 ;XL=0.100 ;}
    else if (ComboBox4->Text=="NYY 4x 10mm²") {Rw=2.16 ;XL=0.094 ;}
    else if (ComboBox4->Text=="NYY 4x 16mm²") {Rw=1.36 ;XL=0.090 ;}
    else if (ComboBox4->Text=="NYY 4x 25mm²") {Rw=0.836 ;XL=0.086 ;}
    else if (ComboBox4->Text=="NYY 4x 35mm²") {Rw=0.627 ;XL=0.083 ;}
    else if (ComboBox4->Text=="NAYY 4x 35mm²") {Rw=1.055 ;XL=0.083 ;}
    else if (ComboBox4->Text=="NYY 4x 50mm²") {Rw=0.463 ;XL=0.083 ;}
    else if (ComboBox4->Text=="NAYY 4x 50mm²") {Rw=0.772 ;XL=0.083 ;}
    else if (ComboBox4->Text=="NYY 4x 70mm²") {Rw=0.321 ;XL=0.082 ;}
    else if (ComboBox4->Text=="NAYY 4x 70mm²") {Rw=0.534 ;XL=0.082 ;}
    else if (ComboBox4->Text=="NYY 4x 95mm²") {Rw=0.232 ;XL=0.082 ;}
    else if (ComboBox4->Text=="NAYY 4x 95mm²") {Rw=0.386 ;XL=0.082 ;}
    else if (ComboBox4->Text=="NYY 4x 120mm²"){Rw=0.184 ;XL=0.080 ;}
    else if (ComboBox4->Text=="NAYY 4x 120mm²") {Rw=0.305 ;XL=0.080 ;}
    else if (ComboBox4->Text=="NYY 4x 150mm²"){Rw=0.150 ;XL=0.080 ;}
    else if (ComboBox4->Text=="NAYY 4x 150mm²") {Rw=0.249 ;XL=0.080 ;}
    else if (ComboBox4->Text=="NYY 4x 185mm²"){Rw=0.1202 ;XL=0.080 ;}
    else if (ComboBox4->Text=="NAYY 4x 185mm²") {Rw=0.198 ;XL=0.080 ;}
    else if (ComboBox4->Text=="NYY 4x 240mm²"){Rw=0.0922 ;XL=0.079 ;}
    else if (ComboBox4->Text=="NYY 4x 300mm²"){Rw=0.0745 ;XL=0.079 ;}
    else if (ComboBox4->Text=="NYY 5x 1,5mm²"){Rw=14.47 ;XL=0.115 ;}
    else if (ComboBox4->Text=="NYY 5x 2,5mm²"){Rw=8.71 ;XL=0.110 ;}
    else if (ComboBox4->Text=="NYY 5x 4mm²") {Rw=5.45 ;XL=0.107 ;}
    else if (ComboBox4->Text=="NYY 5x 6mm²") {Rw=3.62 ;XL=0.100 ;}
    else if (ComboBox4->Text=="NYY 5x 10mm²") {Rw=2.16 ;XL=0.094 ;}
    else if (ComboBox4->Text=="NYY 5x 16mm²") {Rw=1.36 ;XL=0.090 ;}

    //TStringList *list = new TStringList();
    //AnsiString line;
    //Memo2->Lines->LoadFromFile("H:\\Kabel.txt");
    //line=Memo2->Lines->Strings[i];

    Edit18->Text=RW;
    Edit19->Text=XL;

    //delete list;
    }

    Das Problem ist nun, dass der angezeigte Werte in der Edit17,18 , nun teilweise falsch angezeigt werden, z.B. XL=0.110 angezeigt wird 0.10999;

    Muß mal suchen, woran das noch liegt oder hat Jemand eine Idee



  • soviel zur effizienten programmierung

    und was machste, wenn der user sich verschreibt??



  • ja ich weiss. Dann gib mir mal einen Tipp



  • ahl schrieb:

    Ich habe Probleme an dieser Stelle:

    while(pos<li->Count&&explode(li->Strings[pos],' ',1)!=ComboBox1->Text) pos++;

    undefinierte Funktion expolde

    Ich benutze Borland C++Builder5.0, diesen Befehl gibt es nicht.

    Die Fehlermeldung sagt dir doch, das er die Funktion nicht kennt.
    Hast du die Funktion explode vor dem Aufruf bekanntgemacht ?



  • btw. dies ist die Funktion:

    String explode(String &source,char del,int pos) 
    { 
       int i=1,lp=1; 
       while(i<=source.Length()&&pos) 
       { 
          if(source[i]==del) 
          { 
             pos--; 
             if(pos) lp=i+1; 
          } 
          i++; 
       } 
       if(i>source.Length())i++; 
       return source.SubString(lp,i-lp-1); 
    }
    


  • sorry, war mein Fehler mit dem explode.



  • Vielen Dank an alle,

    funktioniert alles einwandfrei, hab das Beispiel von noobi übernommen und meine Dateien noch ein wenig geändert.

    Der Fehler mit der Funktion, war ein kopierfehler, keine Ahnung wie das passiert ist.

    Nochmals vielen dank.



  • noobi schrieb:

    btw. dies ist die Funktion:

    String explode(String &source,char del,int pos) 
    { 
       int i=1,lp=1; 
       while(i<=source.Length()&&pos) 
       { 
          if(source[i]==del) 
          { 
             pos--; 
             if(pos) lp=i+1; 
          } 
          i++; 
       } 
       if(i>source.Length())i++; 
       return source.SubString(lp,i-lp-1); 
    }
    

    kann mir jemand eventuell erklären welche funktion "pos" hier hat? Blicke da nicht wirklich durch... Wenn die Funktion jedoch so abläuft, wie ich es interpretiere ist das nicht wirklich mit der php-explode Funktion vergleichbar sondern eher mit einer automatisierten SubString()...

    Selbst die andere Schleife scheint (wenn ich jetzt nicht ganz verblödet bin) nichts anderes zu machen, als automatisch EINEN Teilstring austzugeben. Weiß jemand wie eine explode aussehen müsste, die ein Array erzeugt?

    "Hallo ich bin ein C++Newbie"
    1 => "Hallo"
    2 => "ich"
    3 => "bin"
    usw...




Anmelden zum Antworten