El código puede escribirse de muchas formas pero lo que lo retrasa el la línea
Memo1.Lines.Add(
Código Delphi
[-]
var
i :Integer;
begin
Memo1.Text:='Numeros impares';
for i := 0 to 499 do
Memo1.Lines.Add(IntToStr((i shl 1) + 1));
end;
Código Delphi
[-]
var
i: integer;
begin
i:= 1;
Memo1.Text:='Numeros impares';
repeat
Memo1.Lines.Add(IntToStr(i));
inc(i,2);
until i > 999;
end;
Si hacemos que el memo se escriba por mensajes, cualquiera de las formas se ejecuta en menos de 10 milisegundos:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
i:= 1;
Memo1.Text:='Numeros impares';
repeat
PostMessage(Handle, WM_USER, i, 0);
inc(i,2);
until i > 999;
end;
procedure TForm1.OnMsg(var Msg: TMessage);
begin
Memo1.Lines.Add(IntToStr(Msg.WParam));
end;
Los bucles terminarán en escasos milisegundos aunque el Memo tardará en llenarse de forma ordenada lo que tarde Windows en tramitar la cola de mensajes.
Saludos.