分是不能白给的,问个问题:
MSComm控件接收到的数据是OLEVariant类型的,怎么处理比较好哪?
我直接把它付给string类型的数据是可以的,但是遇到#0就截断了,这是一个缺点。
想要把它放到array of char中去,但是又不知道该怎么处理,move , strcopy都试了
老是给我抛出[Error] Unit1.pas(31): Variable required的错误招个人气...
http://community.csdn.net/Expert/topic/3901/3901315.xml?temp=.7861292

解决方案 »

  1.   

    procedure TForm1.MSCommComm(Sender: TObject);
    var 
      ovRec: OleVariant; //MSCOMM接收的数据
      baVal: TByteArray; //接收数组,这里假设每次接收100个数据
      s: PByteArray;
      i: Integer;
    begin
      if MSComm.ComEvent=ComEvReceive then
      begin
        ovRec := MSComm.Input;
        s := TVarData(ovRec).VPointer;
        for i:=0 to 99 do
          baVal[i] := s^[i];
      end;
    end;
      

  2.   

    大家不吝赐教啊,真的不知道串口的这个东西怎么搞,听说可以放到TMemoryStream当中去操作,不知道有没有人还有更好的建议,最好能有个model看看...
      

  3.   

    不会吧,难道大家像要合力打造CSDN历史上最强的up帖???高手快来,让我揭贴吧...
      

  4.   

    这个问题我问过一个操作二进制文件的问题 搜一搜帖子吧  就是你说的TMemoryStream内存操作
      

  5.   

    这个问题我问过一个操作二进制文件的问题 搜一搜帖子吧  就是你说的TMemoryStream内存操作
    ----------
    好的,我看看...
      

  6.   

    我只说三点:
    1:好悲惨啊,愚人节俺去听课了没接到分,这厮还结的这么早,cry……补一个:节日快乐
    2:能放200放100,推少了,sigh……
    3:你试试vartostr行不行最后补充一点:恭喜恭喜
      

  7.   

    还up,我都来了赶紧结贴给分就完了^_^
    chat* grin