Schleife in Schleife



  • Hallo

    Ich habe da ein problem und zwar:

    Ich habe 2 mit unterschiedliche Daten gefüllte Memos nennen wir sie M1 und M2

    aus M1 nehme ich den 1 String[0] dann soll das M2 danach durchsucht werden wenn es eine übereinstimmung == dann den nächsten String[1] aus M1 holen.

    Wenn nicht dann wird er gelöscht und aus M1 wird der nächste String[1]geholt und vergliche usw.

    Ich komme mit den zwei schleifen in einer Funktion nicht klar weiß einer Rat?



  • Hallo

    Dafür brauchst du nur eine Schleife

    for (int lv = 0; lv < M1->Lines->Count;)
    {
      if (M2->Lines->IndexOf(M1->Lines->Strings[lv]) == -1)
      {
        M1->Lines->Delete(lv);
      }
      else
      {
        lv++;
      }
    }
    

    bis bald
    akari



  • Hallo

    Oh mann da habe ich voll zu kompliziert gedacht klappt super vielen Dank Sie haben mir sehr geholfen.

    Danke aus Lübeck 👍



  • also da sich lv bei jedem Durchgang automatisch erhöht, würde ich das so machen. Ansonsten werden doch Zeilen übersprungen oder ?

    for (int lv = 0; lv < M1->Lines->Count; lv++) 
    { 
      if (M2->Lines->IndexOf(M1->Lines->Strings[lv]) == -1) 
      { 
        M1->Lines->Delete(lv);
        lv--;
      } 
    }
    

    Wenn die erste Zeile (0) z.B. vorhanden ist, dann wird doch durch lv++ und durch die Schleife selbst eine Zeile übersprungen (lv wird zu 2) ! oder hab ich jetzt einen Aussetzer 🙂



  • Hallo

    @ OldMan : Deine Korrektur ist unnötig. Schau dir mal meinen Schleifenkopf genau an.

    bis bald
    akari



  • ah ok, ich hab das nach dem letzten Semikolon übersehen und natürlich beim copy&paste mit übernommen, habs korregiert :). zu flüchtig hingeschaut 😃



  • oder einfach rückwerts durchgehen, dann spart man sich das else und das Nachrücken hat keine Auswirkungen

    greetz KN4CK3R


Log in to reply