Bir web dosyasında ki html parametrelerini activeX kütüphanesini kullanmadan en hızlı nasıl temizleyebiliriz ?
Benim uyguladığım method çok yavaş

Html Tara :
Kod: Tümünü seç
procedure TForm9.HtmlKodTaraClick(Sender: TObject);
var
I, J, t, Bas, Bit:Integer;
s, s1, s2:WideString;
begin
AdsQuery1.Open; //Html kodu veritabanında olduğu için
Gauge1.Progress:=0;
Gauge1.MaxValue:=AdsQuery1.RecordCount;
Bit:=0;
Bas:=0;
For I:=0 To AdsQuery1.RecordCount-1 Do
begin
GizliRzMemo1.Clear;
GizliRzMemo1.Lines.Text:=AdsQuery1Cevap.Value;
Gauge2.Progress:=0;
Gauge2.MaxValue:=GizliRzMemo1.Lines.Count;
If Trim(GizliRzMemo1.Text)<>'' Then
For J:=0 To GizliRzMemo1.Lines.Count-1 do
If Trim(GizliRzMemo1.Lines.Strings[J])<>'' then
begin
GizliRzEdit1.Clear;
GizliRzEdit1.Text:=Trim(GizliRzMemo1.Lines.Strings[J]);
GizliRzEdit1.Text:=AnsiReplaceText(GizliRzEdit1.Text,'"','|||||');
GizliRzEdit1.Text:=AnsiReplaceText(GizliRzEdit1.Text,t4.Caption,'||||');
GizliRzEdit1.Text:=AnsiReplaceText(GizliRzEdit1.Text,t3.Caption,'|||');
GizliRzEdit1.Text:=AnsiReplaceText(GizliRzEdit1.Text,t2.Caption,'||');
GizliRzEdit1.Text:=AnsiReplaceText(GizliRzEdit1.Text,t1.Caption,'|');
If AnsiPos('<',GizliRzEdit1.Text)>0 Then
While AnsiPos('<',GizliRzEdit1.Text)>0 Do
begin
If AnsiPos('<',GizliRzEdit1.Text)=0 Then
Break
else
If AnsiPos('>',GizliRzEdit1.Text)=0 Then
Break
else
begin
GizliRzEdit1.SelStart := 0;
GizliRzEdit1.SelLength := AnsiPos('<',GizliRzEdit1.Text)-1;
GizliRzEdit1.SelText := '';
GizliRzEdit1.SelStart := 0;
GizliRzEdit1.SelLength := 0;
GizliRzEdit1.SetFocus;
GizliRzEdit1.SelStart := AnsiPos('<',GizliRzEdit1.Text)-1;
GizliRzEdit1.SelLength := AnsiPos('>',GizliRzEdit1.Text);
GizliRzEdit1.CutToClipboard;
Update;
Application.ProcessMessages;
GizliRzEdit2.Clear;
GizliRzEdit2.PasteFromClipboard;
If Trim(GizliRzEdit2.Text)<>'' then
If AnsiPos(GizliRzEdit2.Text, GizliRzMemo2.Text)=0 Then
GizliRzMemo2.Lines.Add(GizliRzEdit2.Text);
{
Bit:=Bit+1;
If Bit>0 Then
begin
GizliRzMemo2.Lines.SaveToFile('C:\Html.pas');
Bit:=0;
end;
}
Update;
Application.ProcessMessages;
end;
end;
Gauge2.Progress:=Gauge2.Progress+1;
end;
Gauge1.Progress:=Gauge1.Progress+1;
AdsQuery1.Next;
Application.ProcessMessages;
end;
GizliRzMemo2.Lines.SaveToFile('C:\Html.pas');
ShowMessage('Bitti...');
//Close;
end;
Html Sil:
Kod: Tümünü seç
procedure TForm9.HtmlKodSilClick(Sender: TObject);
var
I, J, t, Bas, Bit:Integer;
s, s1, s2:WideString;
begin
TemTem.Clear;
TemTem.Lines.LoadFromFile('C:\Html.pas'); //Memoya alıyoruz
If Trim(TemTem.Text)='' Then Exit;
AdsQuery1.Open;
Gauge1.Progress:=0;
Gauge1.MaxValue:=AdsQuery1.RecordCount;
Bit:=0;
Bas:=0;
For I:=0 To AdsQuery1.RecordCount-1 Do
begin
GizliRzMemo1.Clear;
GizliRzMemo1.Lines.Text:=AdsQuery1Cevap.Value;
Gauge2.Progress:=0;
Gauge2.MaxValue:=GizliRzMemo1.Lines.Count;
GizliRzMemo2.Clear;
If Trim(GizliRzMemo1.Text)<>'' Then
For J:=0 To GizliRzMemo1.Lines.Count-1 do
If Trim(GizliRzMemo1.Lines.Strings[J])<>'' then
begin
s:=Trim(GizliRzMemo1.Lines.Strings[J]);
s:=AnsiReplaceText(s,'"','|||||');
s:=AnsiReplaceText(s,t4.Caption,'||||');
s:=AnsiReplaceText(s,t3.Caption,'|||');
s:=AnsiReplaceText(s,t2.Caption,'||');
s:=AnsiReplaceText(s,t1.Caption,'|');
If Trim(s)<>'' Then
For t:=0 To TemTem.Lines.Count-1 do
If Trim(TemTem.Lines.Strings[t])<>'' then
begin
//If (AnsiPos('<br' , Trim(TemTem.Lines.Strings[t]) )>0)or(AnsiPos('<p' , Trim(TemTem.Lines.Strings[t]) )>0) then
//s:=AnsiReplaceText(s,Trim(TemTem.Lines.Strings[t]),'')+#13#10
//else
s:=AnsiReplaceText(s,Trim(TemTem.Lines.Strings[t]),'');
end;
s:=AnsiReplaceText(s,'|||||','"');
s:=AnsiReplaceText(s,'||||',t4.Caption);
s:=AnsiReplaceText(s,'|||',t3.Caption);
s:=AnsiReplaceText(s,'||',t2.Caption);
s:=AnsiReplaceText(s,'|',t1.Caption);
s:=AnsiReplaceText(s,' ',' ');
If Trim(s)<>'' Then
begin
GizliRzMemo2.Lines.Add(s);
If (Length(Trim(s))>61)or (AnsiLastChar(Trim(s))=':')or (AnsiLastChar(Trim(s))='.') Then //Küçük bir paragraf kontrolü ama % 100 doğru değil.
GizliRzMemo2.Lines.Add('');
end;
Gauge2.Progress:=Gauge2.Progress+1;
Application.ProcessMessages;
end;
//GizliRzMemo2 ye eklenen temiz satırları diğer alana kayıt ettiriyorum.
AdsQuery1.Edit;
AdsQuery1TemizCevap.Value:=GizliRzMemo2.Lines.Text;
AdsQuery1.Post;
Gauge1.Progress:=Gauge1.Progress+1;
AdsQuery1.Next;
Application.ProcessMessages;
end;
Close;
end;
t2.captionda ’ var
t3.captionda “ var
t4.captionda ” var
AnsiPos komutu sıkıntı çıkardığı için label üzerinden kontrol ettim.
Bu sistem çok ama çok yavaş. En hızlı çalışması için kodumu yeniden nasıl modellemeliyim ?
Şimdiden teşekkürler,