AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Listboxen vergleichen

Ein Thema von knolli · begonnen am 16. Apr 2008 · letzter Beitrag vom 16. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von knolli
knolli

Registriert seit: 22. Sep 2006
Ort: Zittau
83 Beiträge
 
Delphi 7 Enterprise
 
#1

Listboxen vergleichen

  Alt 16. Apr 2008, 12:21
Hi!

Ich hab mal wieder ein Problem.

Ich sitze zur Zeit an einem Programm, das mir Wörter von Internetseiten holt.
Die Wörter der Seiten ( die in einem Memo sind), werden in eine Listbox eingetragen.
So weit so gut:

Delphi-Quellcode:
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~ Text zerlegen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TWortsuche.Textzerlegen(Sender: TObject);
var sWort, sZeile:string;iLauf, iLauf2:integer;
begin
  For iLauf:=0 to Memo_Seitentext.Lines.Count-1 do //vom ersten bis letztem eintrag
    Begin
      Application.ProcessMessages; //wurde was geklickt?
      IF NOT bAbbruch then //wenn kein abbruch geklickt wurde dann
      begin //von HIER
        sZeile:=Memo_Seitentext.Lines[iLauf]+' '; //
        For iLauf2:=1 to LENGTH(sZeile) do // Wörter
          begin // der
            sWort:=COPY(sZeile,1,POS(' ',sZeile)); // Zeile
            sZeile:=COPY(sZeile,POS(' ',sZeile)+1, LENGTH(sZeile)); // trennen
            IF ((LENGTH(sWort)>1)) then // und
              Listbox_Seitenwoerter.Items.Add(TRIM(sWort)); // eintragen
        end;//for Length(sZeile) // bis HIER
      end;//if abbruch
  end;//for Memolines //Memoinhalt löschen
  Memo_Seitentext.Clear;
end;
Ich habe noch eine andere Listbox, in der Wörter stehen, die nicht eingetragen werden sollen.
Zu beginn des Programms, weiß ich weder wieviele Wörter in der Wörterlistbox stehen, noch wieviele Wörter in der Sperrlistbox stehen.

Ich habe es bis jetz immer nur so hinbekommen, dass zwar die Wörter(die auch in der Sperrliste stehen) ausgesondert werden, aber die Wörter (die nicht in der Sperrliste stehen) so oft eingetragen werden, wie die Sperrliste einträge hat.


Meine Frage:

Wie kann ich beim Eintragen in die Listbox_Seitenwoerter überprüfen, ob das Wort(das eingetragen werden soll) in der Sperrliste steht, ohne das Wörter (die nicht in der Sperrliste stehen) doppelt bzw vielfach eingetragen werden?
mfg Knolli auch bekannt als Meister Lampe
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 12:23
1) Indem du vor jeder Eintragung in die Seitenliste jeden Eintrag aus der Sperrliste durchgehst und prüfst, ob der Eintrag vorkommt?
2) Indem du vor jeder Eintragung in die Seitenliste jeden Eintrag aus der Seitenliste durchgehst und prüfst, ob er schon enthalten ist (zB mit IndexOf)
  Mit Zitat antworten Zitat
Benutzerbild von knolli
knolli

Registriert seit: 22. Sep 2006
Ort: Zittau
83 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 15:51
kannst du mir das mit dem IndexOf vielleicht etwas genauer erklären?

ich hab mal ein demo prg geschrieben, das so aussieht...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j:integer;
begin
For i:=0 to Listbox1.Items.Count-1 do
for j:=0 to Listbox2.Items.Count-1 do
IF ListBox1.Items.IndexOf(Listbox2.Items[j])=-1 then Memo1.Lines.Add(Listbox1.Items[i]);
end;

end.
ich glaube aber das die bedingung des IndexOf falsch ist...
wenn es so ist dürfte es die Wörter aufschreiben, die nicht drin sind oder?
ich hab damit noch nie gearbeitet...
mfg Knolli auch bekannt als Meister Lampe
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 16:13
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to Listbox1.Items.Count-1 do
    if ListBox2.Items.IndexOf(Listbox1.Items[i]) < 0 then
      Memo1.Lines.Add(Listbox1.Items[i]);
end;
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
Benutzerbild von knolli
knolli

Registriert seit: 22. Sep 2006
Ort: Zittau
83 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 18:24
hättest du vielleicht auch dafür einen kleinen kommentar übrig?

ich beschreib es nochmal, weil die Lösung noch nicht so richtig passt.

in dem Testprogramm, habe ich ListBox1 und ListBox2

in LB1 stehen willkürliche Wörter
in LB2 stehen auch willkürliche Wörter, nur weniger(das ist meine "Sperrliste")

nun soll geprüft werden, ob in LB1 eas steht, was auch in LB2 steht.
wenn das der falls ist, dann soll das betreffende Wort in das memo geschrieben werden.
mfg Knolli auch bekannt als Meister Lampe
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#6

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 18:27
Und genau das macht Deddy's Code.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  // Gehe LB1 durch ...
  for i:=0 to Listbox1.Items.Count-1 do
    // ... und schaue, ob in LB2 der Eintrag vorhanden ist ...
    if ListBox2.Items.IndexOf(Listbox1.Items[i]) < 0 then
      // ... und schreibe es in Memo1, wenn ja
      Memo1.Lines.Add(Listbox1.Items[i]);
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 18:28
Ich hatte es genau andersherum verstanden. Dann ändere mal die If-Abfrage von < 0 auf >= 0. Achwas, ich mache das eben selbst:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
  //alle Einträge von ListBox1 durchgehen
  for i:=0 to Listbox1.Items.Count-1 do
    //wenn Eintrag in ListBox2 auch vorhanden
    if ListBox2.Items.IndexOf(Listbox1.Items[i]) >= 0 then
      //ins Memo schreiben
      Memo1.Lines.Add(Listbox1.Items[i]);
end;
[edit] @Mario: ich hatte die Einträge ins Memo geschrieben, die nicht in ListBox2 vorkommen . Lag wohl an dem Begriff "Sperrliste" [/edit]
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
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 18:32
Um zu ermitteln, ob ein Wort gesperrt ist, machst du am Besten eine Unterfunktion (*) :
Delphi-Quellcode:
function TForm1.IsBlockedWord(const s : string):boolean;
begin
  Result := (LB2.Items.IndexOf(s) <> -1);

  // hier an dieser Stelle könne man z.B. auch noch eine zweite Liste (Schimpfwörter) prüfen
  ...
end;
*) ja, man kann tatsächlich in Delphi Unterfunktionen verwenden und damit den Code stark vereinfachen
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von knolli
knolli

Registriert seit: 22. Sep 2006
Ort: Zittau
83 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 18:47
ok danke!

das war schon die richtige antwort

hab mich nur selbst in meine frage nicht reingefunden *peinlich*

danke!
mfg Knolli auch bekannt als Meister Lampe
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Listboxen vergleichen

  Alt 16. Apr 2008, 19:53
@Mods: Bitte verschieben! Ist ja nicht Programmieren allgemein sondern was in Delphi!
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 08:15 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