Je kan een TStringList maken die je als buffertje gebruikt. Je laadt de inhoud van de file in die stringlist, filtert de ongewenste items eruit, en kent het resultaat toe aan een Doel-TStrings, zoals TListBox.Items.
Delphi Code:
var
Bron: TStringList;
i: Integer;
begin
Bron := TStringList.Create;
try
Bron.LoadFromFile('C:\ff\test.txt');
// Items wegfilteren uit Bron
for i := Bron.Count - 1 downto 0 do
if Pos('abc', Bron[i]) = then
Bron.Delete(i);
// Daarna toekennen aan Doel.
Doel.Assign(Bron);
finally
Bron.Free;
end;
end;
Wat misschien beter is, is om Bron onveranderd te laten na het inladen, en alleen de items die je wilt hebben naar Doel te kopieren:
Delphi Code:
var
Bron: TStringList;
i: Integer;
begin
Bron := TStringList.Create;
try
Bron.LoadFromFile('C:\ff\test.txt');
// Gewenste items kopieren naar Doel. Bron blijft onveranderd.
Doel.BeginUpdate;
try
for i := 1 to Bron.Count do
if Pos('abc', Bron[i]) > 0 then
Doel.Add(Bron[i]);
finally
Doel.EndUpdate;
end;
finally
Bron.Free;
end;
end;
Het voordeel hiervan is dat je makkelijk kan blijven filteren, zonder dat je opnieuw het bestand hoeft te laden. Dat kan bijvoorbeeld handig zijn als je snel wilt kunnen filteren in een tamelijk grote tekst. Je laadt 1 keer het bestand in, en daarna hoef je alleen maar in-memory te filteren wat super snel is.
Voorbeeldje in de bijlage.
filterdemo.zip
Bookmarks