Si cambias tu código por uno como este:
Código Delphi
[-]
procedure TForm1.FormActivate(Sender: TObject);
const
CHAR_CRLF = #13#10;
var
x:integer;
Str:String;
begin
Str := '';
Str := Str + '1-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
memo1.Lines.Text:=idHttp1.Get('http://www.aemet.es/es/eltiempo/prediccion/localidades?l=22001');
Str := Str + '2-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
while Memo1.Lines[0]<>''
do memo1.Lines.Delete(0);
Str := Str + '3-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
while memo1.Lines[memo1.Lines.Count-1]<>' do memo1.Lines.Delete(memo1.Lines.Count-1);
memo1.Lines.Delete(memo1.Lines.Count-1);
memo1.Lines.Delete(memo1.Lines.Count-1);
Str := Str + '4-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
memo1.lines[0]:= ''
;
Str := Str + '5-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
for x := 0 to Memo1.Lines.Count do
memo1.lines[x]:= StringReplace( memo1.Lines[x],'/imagenes/','http://www.aemet.es/imagenes/',[rfReplaceAll]);
Str := Str + '6-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
wb1.LoadFromStrings(memo1.lines);
Str := Str + '7-' + FormatDateTime('hh:mm:ss:zzz', now) + CHAR_CRLF;
MessageDlg(Str, mtInformation, [mbOK], 0);
end;
La ventana que aparece es la siguiente:
Como ves, el tiempo realmente se "pierde"en la petición de la página, y no en las operaciones sobre el memo, aunque supongo que si eliminas los borrados tal y como te he dicho algo ganarías...