Announcement

Collapse
No announcement yet.

Schleife und ich verzweifel...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schleife und ich verzweifel...

    Sorry da ich hier nicht den ganzen Text reinbekomme
    hier ein Link wo ich den Mein Problem Code zur ansicht stehen habe!

    http://home.arcor.de/hans_schuett/code.html

    ----
    Problem
    Es werden OBWOHL ich (trim(LowerCase(Lista3.Strings[g])) = trim(LowerCase(Lista.Strings[f]))
    da drin stehen habe DENNOCH DOPPELT Einträge!
    und ich drehe echt durch sitze an diesem Problem schon seit mehr als einer Woche!
    Ok bin halt auch noch blutjunge Anfängerin

    Wer kann mir helfen?

  • #2
    Hallo!<br>
    Was soll die Schleife denn machen?<br>
    Doppelte Einträge herausfiltern?? Das geht so nicht!!<br>
    BYE BERN

    Comment


    • #3
      @Bernd, soweit war Sie dann auch schon...

      @Katherine: Bin leider in Delphi nicht so gut (da ich aus dem C++ Lager stamme). Eine Vorgehensweise wäre, alle Einträge aus der ersten Liste einzutragen und beim Eintragen der Daten aus der zweiten Liste zu prüfen, ob der Eintrag in der ersten Liste schon vorhanden ist. Dazu verwendest Du am einfachtsten eine Hilfvariable, Typ bool, nennen wir Sie Gefunden. In der äußeren Schleife iteterierts Du durch alle Einträge in der zweiten Stringlist. Als ersten Befehl in dieser Schleife setzt Du Gefunden auf false. In der inneren Schleife vergleichst Du alle Einträge in der ersten Stringliste mit der aktuellen aus der zweiten Stringliste. Wenn ein identischer String gefunden wird setzt Du Gefunden auf true und brichst die innere Scheife ab. Nach der inneren Schleife erfolgt das Einfügen aus der zweiten Stringliste, aber nur dann, wenn Gefunden den Wert false hat. Das ist allerdings die Brute-Force-Variante und eignet sich nur für kleine Stringlisten...

      Beispiel könnte ich Dir nur in C++ geben. Möchstest Du eins haben? (Delphi und C++ Builder sind sehr ähnlich...)

      Grüße Joche

      Comment


      • #4
        @Jochen<br>
        Jeder Source erzählt eine Geschichte nur manchmal nicht die, die der Programmierer im Sinn hatte <br>
        <br>
        @Katherine<br>
        Wenn Du gewährleisten kannst, daß die Strings in die Stringliste immer OHNE Leerzeichen am Ende eingesetzt werden gehts so:<br> (Verwende beim Einsetzten in die Stringlist einfach trim() und dann passt das!)<br>
        <PRE>
        for i := 0 to lista3.count-1 do begin
        if not ((Lista.indexof( Lista3[i] ) > -1) or (Lista3[i] = '1') or (Lista3[i] = '2')) then begin
        with Profil_List.Items.Add do begin
        Caption := Lista3[i];
        SubItems.Add('nicht verfügbar - da alter Datensatz');
        SubItems.Add('nicht verfügbar - da alter Datensatz');
        SubItems.Add('nicht verfügbar - da alter Datensatz');
        end;
        end;
        end;
        </PRE>
        <br>
        Wenn Du mir dann doch verraten willst, was das wird kann ich vielleicht noch mit ein paar Tipps dienlich sein.<br>
        Wenn Du Typen aus Delphi verwendest, die Dir noch nicht so geläufig sind (wie hier die Stringliste) hilft ein Blick in die Hilfedatei von Delphi enorm.<br>
        BYE BERN

        Comment


        • #5
          @Bernd Schulz Im grunde ist die aussage *In die Hilfe schauen OK* aber leider ist da nicht viel drin, kann nur wie Andreas Kosch immer wieder auf die MSDN und Bücher hinweisen, das ist einfacher und Effectiver

          @Katherine Leich ich muß auch Bernd Recht geben, wenn man weiß wofür eine Rotine ist kann man sie besser Optimieren

          Gruß Björ

          Comment


          • #6
            Ich denke, das ist deine Lösung:

            var
            Hit : Boolean;

            for g := 0 to Lista3.Count - 1 do begin
            f := 0;
            Hit := FALSE;
            while ( f < Lista.Count) and ( not Hit) do
            begin
            if CompareText(
            LowerCase( Lista3.Strings)
            , LowerCase( Lista.Strings)) = 0
            then Hit := TRUE;
            Inc( f); // f := f + 1;
            end;
            if not Hit then begin
            ListItem2 := Profil_List.Items.Add;
            ListItem2.Caption := Lista3.Strings[g];
            ListItem2.SubItems.Add('nicht verfügbar - da alter Datensatz');
            ListItem2.SubItems.Add('nicht verfügbar - da alter Datensatz');
            ListItem2.SubItems.Add('nicht verfügbar - da alter Datensatz');
            end;
            end;

            Gruß Karsten Adle

            Comment

            Working...
            X