Zitat:
Code:
filelist.Free;
blacklist.Free;
Wo werden diese Listen denn erstellt?
Sowas sollte immer besser logisch zusammenhängend erstellt und freigegeben werden.
Zitat:
Delphi-Quellcode:
If AnsiPos(...) = 0
then {Falls Nein, mache nichts}
else {Falls Ja, mache:}
Hier hast'e es ja wohl selber mitbekommen
If AnsiPos(...) <> 0 then
Delphi-Quellcode:
uses XMLIntf, XMLDoc;
// 'ne private Methode deiner Form
procedure TForm1.CleanList(FileList, BlackList: TMemo);
var Files: IXMLDocument;
FilesRoot: IXMLNodeList;
BadWords: TStringList;
i: Integer;
begin
Files := TXMLDocument.Create(nil);
Files.LoadFromXML(FileList.Text);
FilesRoot := Files.DocumentElement.ChildNodes;
BadWords := TStringList.Create;
try
BadWords.CaseSensitive := False;
BadWords.Sorted := True;
BadWords.Duplicates := dupIgnore;
BadWords.AddStrings(BlackList.Lines);
for i := FilesRoot.Count - 1 downto 0 do
if BadWords.IndexOf(FilesRoot[i].Attributes['Name']) >= 0 then
FilesRoot.Delete(i);
FileList.Text := Files.XML.Text;
finally
BadWords.Free;
end;
end;
procedure TForm1.b_cleanClick(Sender: TObject);
{Entfernt die vorhandenen Einträge aus der Blacklist aus der Liste}
var Start: TDateTime;
begin
Start := Time;
CleanList(mmo_filelist, mmo_blacklist);
mmo_filelist.Lines.SaveToFile(dlgOpen_filelist.FileName);
l_zeit.Caption := TimeToStr(Time - Start);
end;
Ungetestet, aber ausgehend von nachfolgender Dateiliste dürfte es so funktionieren,
wenn die entsprechenden Namen komplett mit einem Namen aus der BlackList übereinstimmen.
Ansonsten einfach die Vergleichfunktion ändern.
XML-Code:
<Root>
<Directory Name="Auto">
<xxxxxxxxxxxxxxxxxxxxx>
<xxxxxxxxxxxxxxxxxxxxx>
</Directory>
<Directory Name="Haus">
<xxxxxxxxxxxxxxxxxxxxx>
<xxxxxxxxxxxxxxxxxxxxx>
<xxxxxxxxxxxxxxxxxxxxx>
</Directory>
<Directory Name="Blume">
<xxxxxxxxxxxxxxxxxxxxx>
<xxxxxxxxxxxxxxxxxxxxx>
<xxxxxxxxxxxxxxxxxxxxx>
</Directory>
</Root>