Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Thunderbird (https://www.delphipraxis.net/166722-thunderbird.html)

Nersgatt 28. Feb 2012 07:13

AW: Thunderbird
 
You should not (miss-) use a visual component for data manipulation. Instead of memo1.lines you could use a TStringList wich is acually very similar, since TMemo.Lines is a class of the type "TStrings" and a TStringList is inherited from TStrings.

himitsu 28. Feb 2012 09:15

AW: Thunderbird
 
Zitat:

Delphi-Quellcode:
  for c1 := 0 to Memo1.Lines.Count - 1 do
  begin
    memo1.lines[c1]:= (StringReplace(memo1.lines[c1],'=','='+#13#10,[rfReplaceAll]));
  end;

  for c2 := 0 to Memo1.Lines.Count - 1 do
  begin
    memo1.lines[c2]:= (StringReplace(memo1.lines[c2],')',''#13#10+'',[rfReplaceAll]));
  end;

  for c3 := 0 to Memo1.Lines.Count - 1 do
  begin
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$${1{@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$$}1}@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$${3{@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$$}3}@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$${4{@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$$}4}@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$${5{@','',[rfReplaceAll]));
    memo1.lines[c3]:= (StringReplace(memo1.lines[c3],'@$$}5}@','',[rfReplaceAll]));
  end;

Warum jede Zeile einzeln, wo einmal über Alles auch ausgereicht hätte?
Warum s1 und s2 nichtssagende Variablen, anstatt direkte Konstanten sind, hab ich auch nicht ganz verstanden. (wenn ich ganz unten s1 lese, dann kommt mir kein @ in den Sinn, welches tausende Zeilen davor mal dort reingemacht wurde)

danten 28. Feb 2012 13:26

AW: Thunderbird
 
Zitat:

Zitat von himitsu (Beitrag 1153315)
Warum jede Zeile einzeln, wo einmal über Alles auch ausgereicht hätte?
Warum s1 und s2 nichtssagende Variablen, anstatt direkte Konstanten sind, hab ich auch nicht ganz verstanden. (wenn ich ganz unten s1 lese, dann kommt mir kein @ in den Sinn, welches tausende Zeilen davor mal dort reingemacht wurde)

I do not understand your question.
It does not work for you?

haentschman 28. Feb 2012 14:17

AW: Thunderbird
 
Hi...

he mean: Why do you use a Loop over the lines ? You ca also use the Property Text without a Loop :zwinker:
Example:
Delphi-Quellcode:
memo1.Text:= (StringReplace(memo1.Text,'@$${1{@','',[rfReplaceAll]))
.

PS: he is reading english, thinking german, writing german :lol:
PS2:
Once more...
Zitat:

You should not (miss-) use a visual component for data manipulation.
...the best Info you ever get 8-)

danten 28. Feb 2012 16:56

AW: Thunderbird
 
Oh yes.
I used the memo in the example just to see what it does, of course I have already used TStringList which is about 99% faster.

Thanks

danten 29. Feb 2012 07:09

AW: Thunderbird
 
It is this right?
Load approx. 15 addresses takes 10 seconds.

Thunderbird personal contacts:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo2: TMemo;
    pb: TProgressBar;
    procedure Button1Click(Sender: TObject);
  private
    procedure ExtractAdress;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1 : TForm1;
  pth : string;
  c,c1,x,y,i : integer;
  SL:TStringList;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  memo2.Clear;
  ExtractAdress;
end;

procedure TForm1.ExtractAdress;
begin
  try
  pth := 'C:\Users\<user_name>\AppData\Roaming\Thunderbird\Profiles\<profile_name>\abook.mab';
  SL := TStringList.Create;

  try
    SL.LoadFromFile(pth);
   for y := 23 downto 0 do
    begin
      SL.Delete(0);
    end;

  pb.Max := SL.Count -1;
  i := SL.Count;

  for c1 := 0 to SL.Count - 1 do
  begin
    Application.ProcessMessages;
    pb.Position := c1;
    SL.text:= (StringReplace(SL.text,'=','='+#13#10,[rfReplaceAll]));
    SL.text:= (StringReplace(SL.text,')',''#13#10+'',[rfReplaceAll]));
    SL.text := (StringReplace(SL.text,'@$${1{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}1}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.Text,'@$${2{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}2}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.Text,'@$${3{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}3}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.text,'@$${4{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}4}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.Text,'@$${5{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}5}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.Text,'@$${6{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}6}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.text,'@$${7{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}7}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.Text,'@$${8{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}8}@','',[rfReplaceAll]));
    SL.text := (StringReplace(SL.Text,'@$${9{@','',[rfReplaceAll]));
    SL.Text := (StringReplace(SL.text,'@$$}9}@','',[rfReplaceAll]));
  end;

  for c := SL.Count - 1 downto 0 do
  begin
  if AnsiPos('@', SL[c]) <> 0 then
    Memo2.Lines.Add(SL[c]);
  end;

  for x := Memo2.Lines.Count - 1 downto 0 do
  begin
  if AnsiPos('<', Memo2.Lines[x]) <> 0 then
    Memo2.Lines.Delete(x);
  end;
  finally
    SL.Free;
    pb.Position := 0;
    if memo2.Text <> '' then
      ShowMessage('Email addresses successfully completed')
    else
      ShowMessage('There are no email addresses');
  end;
  except
    ShowMessage('Could not load file abook.mab');
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz