como eu usava um tsdfdataset
entao SOLUÇÃO FOI
procedure TForm1.Button2Click(Sender: TObject);
var n,nn:integer;
arq,rel:tstringlist;
dadoa,dadob:string;
m:tmemorystream;
begin
m:=tmemorystream.Create;
arq:=tstringlist.create;
rel:=tstringlist.create;
arq.loadfromfile('c:\bd.csv');
n:=0;
repeat
dadoa:=copy(arq.strings[n],1,length(arq.strings[n]));
nn:=1;
repeat
dadob:=copy(dadoa,nn,length(edit1.text));
if dadob=edit1.text then //se o objeto ou parte é encontrado em qualquer linha do arquivo
begin
rel.add(arq.strings[n]); //então é adicionado no resultado
end;
inc(nn);
until(nn=length(dadoa)-length(edit1.text));
inc(n);
until(n=arq.count);
rel.SaveToStream(m); //é salvo para memoria
tbcontato.Active:=false;
tbcontato.LoadFromStream(m);// o sdfdataset carrega da memoria
tbcontato.Active:=true;//o sdfdataset é ativado
tbcontato.First;
m.free;
rel.Free;
arq.Free;
end;