VB的一段程序,现要用Delphi来实现,其中 Text1为文本控件  MsComm1为串口通信控件
 Dim out(0) As Byteout(0) = Val(Text1.Text);MSComm1.Output = out上面定义out(0)为Byte类型,而out是什么意思呢,Val函数的作用是什么呢?
如果这两句在Delphi中应该怎么写
Dim B As String
  Dim A As Integer
While MSComm1.InBufferCount <> 0
  B = MSComm1.Input
  If B <> "" Then
    A = Val(AscB(B))
End If
WendAscb函数的作用是什么,A=Val(AscB(B))这一句在Delphi中应该怎么写呢?
望各位大侠赐教,多谢!

解决方案 »

  1.   

    Val函数是将字符转换成整数,Ascb函数求字符的ASCII码,我不知道对DELPHI来说有没有MsComm 控件(我很菜)。对以上代码是不是这样:
    1.
    var
     out(0) : Byte;.......
     out(0) := StrToInt(Edit1.Text);
    MSComm1.Output := out;
    ................
    2.
    var
     b : String;
     A : Integer;
     While MsComm1.InBufferCount <> 0 do
     begin
       B := Mscomm1.InPut;
       if (B <> '') then A := StrToInt(Ord(B));
     end;
      

  2.   

    错:
    var Out:array[0..0] of byte;
      

  3.   

    //VB的一段程序,现要用Delphi来实现,其中 Text1为文本控件  MsComm1为串口通信控件var
      out: array[0] of Byte
      i: Integer;
      B: Variant;
    begin
      out[0] := StrToInt(Text1.Text);   // TextBox是VB中的编辑框控件,Delphi对应的为TEditBox
      B := VarArrayCreate([0, High(out)], varByte);
      for i:=0 to High(out) do B[i] := out[i];
      MSComm1.Output := B; // Delphi里可以使用ActiveX控件,但是需要安装。
    end;
      

  4.   

    你的第二个问题是关于接收的,可参考下面这段代码:procedure TForm1.MSComm1Comm(Sender: TObject);
    var
      B: Variant;
      A, j: Integer;
    begin
      if MSComm1.CommEvent <> comEvReceive then Exit;  j := MSComm1.InBufferCount;   // 在Input后用SizeOf(B)求得的字节数是固定的:16。
      B := MSComm1.Input;
        
      for i:=0 to j-1 do            // 显示收到的每个数据
      begin
        A := Ord(B[i]);
        ShowMessage(IntToHex(A, 2));  // 以十六进制显示
      end;
    end;
      

  5.   

    我的第一个回复有误,VB里的数组 Dim out(0) as Byte在 Delphi 里应该是 var
      out: array[0..0] of Byte
      

  6.   

    to DDGG(叮叮当当)
      你的回复中A:=Ord(B[i])语句错误,类型不一致呀,你调试过了吗?
      

  7.   

    MsComm1.output应该怎么赋值,总是提示数据类型不一致各位兄弟,帮帮小弟呀,最好把在Delphi中调试过的程序发给小弟  多谢  多谢!
      

  8.   

    在Delphi中可以用CreateFile这个SDK_API比研究MsComm控件容易多了,
    procedure a;
    var
      h : THandle;
    begin
      h := CreateFile('COM1', ...);
      WriteFile(...);
      CloseFile(h);
    end;
      

  9.   

    修正如下:(已编译通过)发送的示例:var
      out: array[0..0] of Byte;
      i: Integer;
      B: Variant;
    begin
      out[0] := StrToInt(Text1.Text);   // TextBox是VB中的编辑框控件,Delphi对应的为TEditBox
      B := VarArrayCreate([0, High(out)], varByte);
      for i:=0 to High(out) do B[i] := out[i];
      MSComm1.Output := B; 
    end;接收的示例:procedure TForm1.MSComm1Comm(Sender: TObject);
    var
      B: Variant;
      A, i, j: Integer;
    begin
      if MSComm1.CommEvent <> comEvReceive then Exit;  j := MSComm1.InBufferCount;
      B := MSComm1.Input;  for i:=0 to j-1 do              // 显示收到的每个数据
      begin
        A := Byte(B[i]);
        ShowMessage(IntToHex(A, 2));  // 以十六进制显示
      end;
    end;
      

  10.   

    To   DDGG(叮叮当当) 你好:能留下你的联系方式QQ和E-Mail吗?
      

  11.   

    还有问题?你可以通过MSN和我联系:[email protected]