Судя по вашей первой картинке вы копаете демку Terminal из компонента BComPort, вот переделанная функция:
Код:
procedure TMainForm.BComPort1RxChar(Sender: TObject; Count: Integer);
var
S: String;
bptr: ^Byte;
I: Integer;
str: string;
begin
BComPort1.ReadStr(S, Count);
if cbCRLF.Checked and (S[Length(S)] = #13) then // Добавление перевода строки
begin
S := S + #10;
Memo1.Lines.Add('');
end;
str:= '';
bptr:= @S[1];
for I := 0 to Length(S)-1 do
begin
str:= str + Char(bptr^);
Inc(bptr);
end;
Memo1.Text:= Memo1.Text + str;
end;
BComPort хороший компонент, winapi при этом не нужен.