AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Einträge zweier Listboxen an bestimmten Stellen vergl.

Einträge zweier Listboxen an bestimmten Stellen vergl.

Ein Thema von Ginko · begonnen am 14. Okt 2008 · letzter Beitrag vom 15. Okt 2008
Antwort Antwort
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#1

Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 14. Okt 2008, 20:14
Hallo, ich habe ein Problem und es wäre toll wenn da jemand eine Idee zu hätte.
Also folgendes ich will die Einträge zweier Listboxen an bestimmten Stellen vergleichen.

Also zB so:
Listbox1
02
04
03
05

Listbox2
01 02
03 04

Hier sollte dann nur 05 übertragen werden, da der Wert nicht in Listbox2 enthalten ist.

Ich habe es mit einer Schleife versucht, war aber weniger erfolgreich....

Delphi-Quellcode:
 for s := 0 to listbox1.items.count -1 do
    begin
      for t := 0 to listbox2.items.count -1 do
        begin
          if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) =
             (listbox2.Items[t][1]) + (listbox2.Items[t][4])then break
             else
               if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) =
                  (listbox2.Items[t][7]) + (listbox2.Items[t][10]) then break
               else
                 if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) <>
                    (listbox2.Items[t][1]) + (listbox2.Items[t][4])then
                     begin
                       if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) <>
                          (listbox2.Items[t][7]) + (listbox2.Items[t][10]) then
                           stringgrid1.Rows[0].Add (listbox1.items[s][8] + ' ' +
                           listbox1.items[s][10] + ' ' + listbox1.items[s][12] + ' v');
                     end;
        end;
    end;
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 12:26
Ist es vielleicht möglich die Listbox2 in eine Menge zusammenzufassen und zu prüfen ob die Werte der Listbox1 sich in der Menge befinden ?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 12:38
Hallo,

mir ist nicht klar, was Du da machst und was Du eigentlich machen möchtest und wo genau Dein Problem liegt:

Delphi-Quellcode:
if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) =
   (listbox2.Items[t][1]) + (listbox2.Items[t][4])then break
   else
   if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) =
      (listbox2.Items[t][7]) + (listbox2.Items[t][10]) then break
      else
      if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) <>
         (listbox2.Items[t][1]) + (listbox2.Items[t][4])then
         begin
         if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) <>
            (listbox2.Items[t][7]) + (listbox2.Items[t][10]) then
               stringgrid1.Rows[0].Add (listbox1.items[s][8] + ' ' +
               listbox1.items[s][10] + ' ' + listbox1.items[s][12] + ' v');
Du vergleichst für jeden Eintrag das 1 und 4 Zeichen der Listbox1 mit dem 1 und 4 Zeichen der Listbox2, sind die gleich raus.
Du vergleichst für jeden Eintrag das 1 und 4 Zeichen der Listbox1 mit dem 7 und 10 Zeichen der Listbox2, sind die gleich raus.
Du vergleichst für jeden Eintrag das 1 und 4 Zeichen der Listbox1 mit dem 1 und 4 Zeichen der Listbox2, sind die ungleich, dann vergleichst Du das 1 und 4 Zeichen der Listbox1 mit dem 7 und 10 Zeichen der Listbox2, sind die ungleich, dann erfolgt eine Ausgabe.

Ausgehend von Deinen Beispielen kann ich nicht erkennen, dass diese Bedingungen jemals erfüllt sein können.
Stell' bitte mal konkrete Beispieldaten zur Verfügung, eventuell wird das ja dann etwas transparenter.
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 13:32
Gut ich versuche es mal:

Listbox1
0),2) x o x
0),4) o x x
2),6) o x x
4),5) x x o
4),6) x o x

Listbox2
0),2),4),6) o o x
0),4),2),6) o o x


Hier sollte der Wert 4),5) x x o rausgeschrieben werden da er nicht in der Listbox 2 an den bestimmten Stellen vorhanden ist.
Also meine Schleife vergleicht wie du gesagt hast die Werte. Das Problem ist nur, wenn jetzt
0),4) mit 0),2),4),6) verglichen wird, schreibt er den Wert raus und das soll ja nicht geschehen,
weil der Wert 0),4) an der 2ten Stelle ja in der Listbox 2 steht.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 14:41
Hallo,

ich bin mit nicht sicher, aber meinst Du es eventuell so?
Delphi-Quellcode:
if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) =
   (listbox2.Items[t][1]) + (listbox2.Items[t][4])then break
   else
   if (listbox1.Items[s][1]) + (listbox1.Items[s][4]) =
      (listbox2.Items[t][7]) + (listbox2.Items[t][10]) then break
      else
      if (
           (listbox1.Items[s][1]) + (listbox1.Items[s][4]) <>
           (listbox2.Items[t][1]) + (listbox2.Items[t][4])
         )
         and
         (
            (listbox1.Items[s][1]) + (listbox1.Items[s][4]) <>
            (listbox2.Items[t][7]) + (listbox2.Items[t][10])
         ) then
               stringgrid1.Rows[0].Add (listbox1.items[s][8] + ' ' +
               listbox1.items[s][10] + ' ' + listbox1.items[s][12] + ' v');
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 14:57
Nein leider nicht, die Schleife hat den selben Effekt wie meine.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 15:35
hoffe ich hab dich richtig verstanden:
Delphi-Quellcode:
[...]
var
  s, t: integer;
  bGefunden: Boolean;
begin
  for s := 0 to listbox1.items.count -1 do
  begin
    bGefunden := False;
    for t := 0 to listbox2.items.count -1 do
    begin
      if pos(ListBox1.Items[s], ListBox2.Items[t]) then
      begin
        bGefunden := True;
        Break;
      end;
    end;
    if not bGefunden then
    begin
      // ListBox1.Items[s] kommt nicht in ListBox2 vor. Mach nun was du willst
    end;
  end;
end;
[...]
Gruß
Ansgar
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 15:41
if pos(ListBox1.Items[s], ListBox2.Items[t]) > 0 then //der Vergleich auf > 0 fehlte
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Einträge zweier Listboxen an bestimmten Stellen vergl.

  Alt 15. Okt 2008, 16:20
Juhuu es klappt danke euch

und zwar so :
Delphi-Quellcode:
    for s := 0 to listbox1.items.count -1 do
    begin
      bGefunden := False;
      for t := 0 to listbox2.items.count -1 do
      begin
        if (pos(listbox1.Items[s][1],listbox2.Items[t][1]) > 0) and
            (pos(listbox1.Items[s][4],listbox2.Items[t][4]) > 0) or
            (pos(listbox1.Items[s][1],listbox2.Items[t][7]) > 0) and
            (pos(listbox1.Items[s][4],listbox2.Items[t][10]) > 0) then
        begin
          bGefunden := True;
          Break;
        end;
      end;
      if not bGefunden then
      begin
         showmessage(listbox1.Items[s]);
      end;
    end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz