我的毕业设计里面需要用 delphi 和comport 通讯。
从网上下到了两个版本的spcomm, 都不能用。先说一下我的安装步骤 tools->option->Environmental options->Library -Win32->Library Paths
然后在程序里面 加入use spcomm;编译以后两个版本的问题都出现在
if not SetupReadEvent( @overlappedRead,
                            szInputBuffer, INPUTBUFFERSIZE,
                            nNumberOfBytesRead ) then
中的szInputBuffer. 比较早的一个版本是直接的szInputBuffer, 另一个PChar(szInputBuffer). 系统报错是Incompatible types:  Array and PAnsiChar我把后者改为PAnsiChar(szInputBuffer)以后, 成功编译,但是在运行下面的代码时,出现问题。
fcomm: TCOMM;
begin
fcomm.CommName := 'COM1';
fcomm.BaudRate := 9600;
fcomm.Parity := false;if fcomm.PortOpen then
btnDisplay.Caption := 'Port Open'
else
btnDisplay.Caption := 'Port Closed';
end;系统报错: Access violation at address 004BFC32 in module "project1.exe'. Read of address 0000003c.是Delphi 2010和spcomm不兼容么? 如果是这样,那么最新的和spcomm兼容的delphi是哪个版本?谢谢指点。

解决方案 »

  1.   

    .谢谢,我再试试。你说的出错是指没有出compile的错还是access violation的错?
      

  2.   

    现在回答很晚了,不过希望以后看到的弄清楚这个问题1、把szInputBuffer的定义由Char改为AnsiChar
    2、lpszPostedBytes := PChar....改为PAnsiChar...
    原因是从DELPHI 2009以后,像char这种的类型实际上是widechar了,变化概要:String 类型映射为 UnicodeString 而不是 AnsiString 
    Char 类型映射为 WideChar(2 bytes not 1 byte), 并且是 UTF-16 字符 
    PChar 类型映射为 PWideChar 
    C++ 中,System::String 映射到 UnicodeString 类 
    Delphi 中,AnsiString 映射为早先版本中默认的 string 
    未变化概要:AnsiString 
    WideString 
    AnsiChar 
    PAnsiChar 
    隐式转换仍然可用