Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: StrList zeilenw. kopiern unter Berücksichtg. Schwarzen L

  Alt 10. Apr 2010, 09:55
Ich denke ListBox4 und nicht Memo4 ... was macht also das Memo4 in deinem Code?

Wozu der String "Erg", wenn du ihn eh nur wie einen Boolean verwendest, in einer IF-Abfrage?

Deine Abfrage "If Pos(..." sollte besser andersrum sein, denn du willst ja wissen ob mindestens einer der Strings enthalten ist.

"Pos > 0" = mindestens Einer enthalten, da bei ersten auffinden reagiert wird
"Pos < 1" aka "Pos = 0" = alle enthalten enthalten, da beim ersten nichtauffinden reagiert wird


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  j, k: Integer;
  b: Boolean;
begin
  ListBox3.Clear;
  ListBox4.Clear;
  for j := 0 to ListBox1.Items.Count - 1 do
  begin
    b := False;
    for k := 0 to ListBox2.Items.Count - 1 do
      if Pos(ListBox2.Items.Strings[k], ListBox1.Items.Strings[j]) > 0 then
        b := True;
    if b then ListBox3.Items.Add(ListBox1.Items.Strings[j])
      else ListBox2.Items.Add(ListBox1.Items.Strings[j]);
  end;
noch ein bissl optimiert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  j, k: Integer;
  b: Boolean;
  s: String;
begin
  ListBox3.Clear;
  ListBox4.Clear;
  for j := 0 to ListBox1.Items.Count - 1 do
  begin
    s := ListBox1.Items.Strings[j];
    b := False;
    for k := 0 to ListBox2.Items.Count - 1 do
      if Pos(ListBox2.Items.Strings[k], s) > 0 then
      begin
        b := True;
        Break; // wozu weitersuchen, wenn schon gefunden
      end;
    if b then ListBox3.Items.Add(s) else ListBox2.Items.Add(s);
  end;
PS: Müssen eigentlich die Strings aus LisbBox2 genau enthalten sein, also beide Stings übereinstimmem,
oder können sie auch nur ein Teil des eines Strings aus der ListBox1 sein?

PSS: Wie ist es mit Groß-/Kleinschreibung?
$2B or not $2B
  Mit Zitat antworten Zitat