Html Kodu Temizleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Html Kodu Temizleme

Mesaj gönderen ender_arslanturk »

Selâmlar,

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,'&nbsp;',' ');



                        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;


t1.captionda ' var
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,
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Re: Html Kodu Temizleme

Mesaj gönderen ender_arslanturk »

Bu şekilde çözüldü.

HtmlToRtf:
www.delphiturkiye.com/forum/viewtopic.php?f=19&t=32483
Cevapla