Siempre que agregues algo a un TMemo se va a agregar un renglón vacío, para permitirte agregar otro elemento.
Una solución bastante simple que te puedo ofrecer es:
Código Delphi
[-]
procedure TStrListToListBox(StrList:TStringList; var LB:TListBox);
var
I:Integer;
begin
for I := 0 to StrList.Count-1 do
LB.Items.Append(StrList.Strings[i]);
end;
procedure GetMemoSinVacios(Memo:TMemo; var L:TStringList);
var
I:Integer;
begin
L:=TStringList.Create;
for I := 0 to Memo.Lines.Count-1 do
L.Add(Memo.Lines.Strings[i]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
L:TStringList;
begin
GetMemoSinVacios(Memo1,L);
TStrListToListBox(L,ListBox1);
end;
Espero que se entienda y te sirva.
Puede ser que haya mejores soluciones, pero yo siempre utilizo esto para ese problema.
Saludos!