Zahlen aus Edit in mehrere verteilen



  • Hallo,
    ich hab ein Edit in die eine Zahl geschrieben wird. z.b. 1000000 oder 1000.
    weil das aber so unübersichtlich ist, möchte ich immer die letzten 3 Zahlen aus dem Edit (bei 1000102 ist es 102, bei 10105 ist es 105) in ein anderes Edit schreiben lassen. und as mit den übrigen Zahlen genauso.

    Also, dass dann bei Edit1 zb. "1456000" steht, ich dann aber in Edit 2
    eine 0 habe, in edit3 eine 0, in Edit4 eine 0, edit5->6, edit7->5 usw.

    bei der Zahl 1230, möchte ich in edit2 eine o, edit3->3, usw.

    ich hoffe ihr habt verstanden was ich meine. 😕

    Nur weiß ich nicht recht, wie ich das anstellen soll. Wie ich die Zahlen von der ersten Zahl bis zur letzten in ein anderes edit bringe weiß ich, aber nicht von der letzten bis zur ersten.

    Ich hoffe ihr könnt mir weiterhelfen.

    danke schonmal im vorraus.

    Lg,
    drummi



  • drummi schrieb:

    Wie ich die Zahlen von der ersten Zahl bis zur letzten in ein anderes edit bringe weiß ich

    aber nicht von der letzten bis zur ersten.

    Versteh ich nicht, wieso sollte sich die Vorgehensweise bei letzterem von der ersten unterscheiden? Statt vorne fängst du eben hinten an.



  • Ich nehme an, dass du die einzelnen Ziffern mithilfe einer For-Schleife auslesen wirst.
    Und in die Editfelder einträgst.

    Beispielsweise (Sollte eigentlich funktionieren [habs grad nicht geprüft]):

    TEdit *teEdit;
      UnicodeString sText=TEdit1->Text;
    
      for(int i=1; i<=sText.Length(); i++){
        teEdit=dynamic_cast<TEdit*>(Form1->FindComponent("TEdit" + IntToStr(i)));
        if(teEdit)
          teEdit->Text=sText[i];
      }
    

    Demnach müsstest du das Ganze dann umdrehen:

    TEdit *teEdit;
      UnicodeString sText=TEdit1->Text;
    
      for(int i=sText.Length(); i>0); i--){
        teEdit=dynamic_cast<TEdit*>(Form1->FindComponent("TEdit" + IntToStr(i)));
        if(teEdit)
          teEdit->Text=sText[i];
      }
    

    (Vorausgesetzt, die Editfelder existieren bereits).

    Ich bin mir nicht sicher, ob du das gemeint hast. Aber mal sehen. 😃



  • warum verkehrt herum geht es nicht auch richtig rum ?
    Also statt 0 in Edit 2 die 1 in Edit 2 ?
    das wäre deutlich einfacher. und besser zu durchblicken.



  • Tim06TR schrieb:

    warum verkehrt herum geht es nicht auch richtig rum ?

    int len = sText.Length();
       teEdit  = dynamic_cast<TEdit*>(Form1->FindComponent("Edit" + IntToStr(len -i + 2)));
    

    Einfach runterzählen. Angenommen wird o.g. Beispiel mit Edit2 als Einerstelle, Edit3 Zehnerstelle usw.

    mfg
    kpeter


Anmelden zum Antworten