根据inputmode来确定读取的格式,是字节,还是字符。
然后直接赋值就可以了!
比如读取字符格式的
var
  buf:string;
begin
  do
    buf:=mscomm1.input;
    if 退出的条件 then
    begin
      break;
    end;
    application.processmessages//加上这个可以让程序响应外来的消息。
  until true
end;

解决方案 »

  1.   

    设置inputmode模式
    var
       buf:variant
    begin
       buf:=mscomm1.input//你必须知道读到的数据类型
    end
      

  2.   

    如果是二进制模式:
    procedure TForm1.MSComm1Comm(Sender: TObject);
    var vtmp,ovTmp:variant;
        i,iReceived:Integer;
        bTmp:Byte;
        s:String;
        t:Dword;
    begin
      if mscomm1.CommEvent=2 then
        mscomm1.InputMode:=comInputModeBinary;
            t:=gettickcount();
    while GetTickCount-t<200  do
      application.ProcessMessages;
        iReceived:=mscomm1.InBufferCount;
        ovtmp:=mscomm1.Input;
        vtmp:=VarArrayCreate([0,127],varbyte);
        vtmp:=ovtmp ;
        s:='';
        for i:=0 to iReceived-1 do
          begin
            bTmp:=vtmp[i];
            s:=s+chr(bTmp);
          end;
    end;
      

  3.   

    在OnComm事件中写代码,正如suuare(督察)所写。