Erstens: Was passiert denn zur Zeit, wenn du den Code ausführst? Zweitens: Warum leerst du Listbox2 vor der Schleife? Dann ist die "Blacklist" doch weg..
[Edit] Außerdem müsstest du Erg beio jedem Durchlauf wieder auf '' setzen, sehe ich das richtig? Sonst ist ja immer das Ergebnis des vorherigen Durchlaufs noch mit drinnen.
[Edit2]Okay, dann zur inneren Schleife. Es darf ja
keins der Elemente der Blacklist vorkommen. Wenn nun abewr das erste der Blacklist nicht vorkommt, wird Erg direkt gesetzt. Kommt danach noch ein Wort aus der Blacklist vor, zum Beispiel das zweite, ist Erg immer noch gefüllt und wird somit in Listbox3 geschrieben. Ich hoffe ich habe dieses mal nicht übersehen...
[Edit3]Ich hab das ganze mal bei mir ausprobiert und es mir erlaubt ein bisschen am Code zu werkeln
Anstelle der Erg-Variable nutze ich eine Boolsche Veriable, die beinhaltet, ob der Eintrag "okay" ist oder nicht. Unabhängig davon wird vor der Schleife auf den Sonderstring überprüft (ich hoffe, der Sonderstring darf auch die Inhalte der Blacklist enthalten). Hier der Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
B: Boolean;
j, k: Integer;
begin
listbox3.Clear;
listbox4.Clear;
for j := 0 to Listbox1.Items.Count - 1 do
begin
if Pos('reanimation', LowerCase(listbox1.items.Strings[J])) > 0 then
begin
Listbox4.Items.Add(listbox1.items.Strings[J]);
end
else
begin
B := True;
for k := 0 to ListBox2.Items.Count - 1 do
begin
if Pos(LowerCase(ListBox2.Items[k]), LowerCase(Listbox1.Items[J])) > 0 then
begin
B := False;
end;
end;
if B then
begin
Listbox3.items.Add(listbox1.items.Strings[J]);
end;
end;
end;2
end;
Ich hoffe, das hilft. Bei mir ergab es die richtigen Ergebnisse. Abgesehen von dem Ausbessern des Logikfehlers (aus [Edit2]) habe ich auch die Groß- und Kleinschreibung durch das LowerCase ignoriert.
Gruß