Habe zu Testzwecken mal etwas geschrieben, aber warum funktioniert es nicht?
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i, j, al, aj : integer;
liste, ja_liste, del_liste, ok_liste : TStringList;
begin
liste:=TStringList.Create;
ja_liste:=TStringList.Create;
del_liste:=TStringList.Create;
ok_liste:=TStringList.Create;
liste.Add('');
liste.Add('a');
liste.Add('b');
liste.Add('d');
liste.Add('r');
liste.Add('x');
liste.Add('a');
liste.Add('c');
liste.Add('b');
liste.Add('c');
ja_liste.Add('');
// ja_liste.Add('a'); // Falls mehr als ein Objekt hier steht, funktionert das Ganze nicht mehr
ja_liste.Add('x');
al:=liste.count;
aj:=ja_liste.count;
ShowMessage (IntToStr(al)+';'+IntToStr(aj)); // Zur Überprüfung, wie lang die Listen sind
for i := 1 to al-1 do
for j := 1 to aj-1 do
if liste[i] = ja_liste[j]
then ok_liste.Add(liste[i])
else del_liste.Add(liste[i]);
Memo1.Lines:=ok_liste;
Memo2.Lines:=del_liste;
end;
Es passiert folgendes:
Ich habe die zwei Listen. Einmal eine Liste von Strings die vorkommen (liste) und eine in der die erlaubten Strings stehen (ja_liste).
In Memo1 wird mir am Ende die Liste der erlaubten Strings angezeigt, in Memo2 sollen eigentlich die Strings angezeigt werden, die herausgenommen werden. Wenn die Liste ja_liste aus nur nur z.B. 'a' besteht funktioniert das ganze wunderbar. Nur sobald mehr vorkommen, gibt es einen Fehler mit der Zähschleife. Dann wir viel zu viel und falsches Ausgegeben.