Eintrag in CheckListBox suchen -> Fehlermeldung in for-Schleife



  • Hallo

    Das hab ich schon verstanden....

    Nein, hast du nicht, denn dann hättest du die Abbruchbedingungen schon geändert

    for(int i=0;i < CheckListBox1->Count;i++)
    {
      for(int j=0;j < Memo2->Lines->Count;j++)
    

    Desweiteren läßt sich die innere Schleife durch die Verwendung von TStrings::IndexOf() ersetzen.

    bis bald
    akari



  • ...dann gib mir wenigstens im Ansatz mal ne Hilfe wo das Problem liegt, ich komm hier echt grad nicht weiter.



  • Hallo

    *seufz* Ich habe doch schon Ansätze gegeben...
    Also hier für Copy&Paste :

    AnsiString Information;
    int Pos;
    for(int j=0;j < Memo2->Lines->Count;j++) // < anstatt <=
    {
      Information = Memo2->Lines->Strings[j];
      if((Pos = CheckListBox1->Items->IndexOf(Information)) > -1)
      {
        ShowMessage("Eintrag gefunden -> " + Information + " an Position " + IntToStr(Pos));
        }
      }
    

    bis bald
    akari


  • Mod

    Hallo

    normalerweise sollte man da sagen

    Bitte mal aufstehen, du sitzt auf der Leitung 😃
    (wer lesen kann ist echt im Vorteil - alles bitte nochmal durchlesen !!! - besonders den Beitrag von akari)

    Mfg
    Klaus



  • Danke erstmal.

    Ich hatte meine Abbruchbedingung in der Schleife vorhin auch schon mal so gehabt. Leider passiert dann wie bei deinem Beispiel garnichts.

    Desweiteren ist es so, dass mein Memo deutlich weniger Einträge hat als die CheckListBox, deshalb die zweite Schleife.

    Habt ihr ne Idee warum er bei der Bedingung

    for(int j=0;j < Memo2->Lines->Count;j++) // < anstatt <=
    

    garnichts mehr macht?

    Gruß



  • Wenn beispielsweise

    Memo2->Lines->Count = 10

    ist - Von wo bis wo gehen diese 10 Zeilen?

    Also bitte vervollständigen

    1. Zeile ist [ ]

    letzte Zeile ist [ ]

    das sind insgesamt 10 Zeilen



  • Hallo

    @ maikmueller : Es passiert nichts, weil keine der Zeilen aus dem Memo in der CheckListBox vorhanden sind. Last sich ganz einfach so ausprobieren :

    AnsiString Information;
    int Pos;
    for(int j=0;j < Memo2->Lines->Count;j++) // < anstatt <=
    {
      Information = Memo2->Lines->Strings[j];
      if((Pos = CheckListBox1->Items->IndexOf(Information)) > -1)
      {
        ShowMessage("Eintrag gefunden -> " + Information + " an Position " + IntToStr(Pos));
        } 
      else
      {
        ShowMessage("Eintrag nicht gefunden -> " + Information + "); 
        }
      }
    

    bis bald
    akari



  • Wenn beispielsweise

    Memo2->Lines->Count = 10

    ist - Von wo bis wo gehen diese 10 Zeilen?

    Also bitte vervollständigen

    1. Zeile ist [0]

    letzte Zeile ist [9]

    das sind insgesamt 10 Zeilen

    Ist das richtig?

    Ich versteh deine Antwort nicht!



  • Hallo

    Ja, deine Antwort ist richtig. Und christians Frage soll dich nochmal auf das stoßen, was ich dir schon im ersten Post von mir gesagthabe.
    Das du < anstatt <= verwenden must.

    bis bald
    akari



  • @Akari:

    Es passiert nichts, weil keine der Zeilen aus dem Memo in der CheckListBox vorhanden sind...

    Das ist Quatsch, mindestens 5 Einträge des Memo kommen auch in der CheckListBox vor.

    Gruß

    Maik



  • Hallo

    Offenbar eben doch nicht. Oder glaubst du dein Computer belügt dich?
    Benutzt die erweiterte Routine mit dem else-Teil. Dann wirst du sehen, das es keine Übereinstimmung gibt.
    Übwigens können solche Unterschiede schon durch Leerzeichen o.ä. auftreten.

    bis bald
    akari



  • Hallo!

    Danke für die zahlreichen Beiträge gestern. Habs inzwischen geschafft, alles funktioniert wunderbar.

    War gestern irgendwie neben der Kappe. Es funktioniert halt nicht, wenn man versucht eine Dateiversion mit einem Dateinamen zu vergleichen, dass war das Problem der ganzen Sache.

    Sorry und vielen Dank.

    Gruß

    Maik


Anmelden zum Antworten