大虾看看我为什么错了(10分)

  • 主题发起人 主题发起人 hami
  • 开始时间 开始时间
H

hami

Unregistered / Unconfirmed
GUEST, unregistred user!
在spcom的程序中有一句move(buffer^,pchar(@rbuf^),bufferlength);我怎么始终报错呢?
 
写完整一些,这么一条语句怎么能明白呢?
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, SPComm;

type
TForm1 = class(TForm)
Comm1: TComm;
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
viewstring:string;
i:integer;
rbuf,sbuf:array[1..6]of byte;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
comm1.StartComm;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
comm1.StopComm;
end;
procedure senddata;
var
i:integer;
commflg:boolean;
begin
viewstring:='';
commflg:=true;
for i:=1 to 6 do
begin
if not form1.Comm1.WriteCommData(@sbuf,1) then
begin
commflg:=false;
break;
end;
sleep(2);
viewstring:=viewstring+inttohex(sbuf,2)+'';
end;
viewstring:='发送'+viewstring;
form1.Memo1.Lines.Add(viewstring);
form1.Memo1.Lines.Add('');
if not commflg then messagedlg('发送失败!',mterror,[mbyes],0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
sbuf[1]:=byte($f0); {帧头}
sbuf[2]:=byte($01); {命令号}
sbuf[3]:=byte($ff);
sbuf[4]:=byte($ff);
sbuf[5]:=byte($01);
sbuf[6]:=byte($0f); {帧尾}
senddata;{调用发送函数}
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
i:integer;
begin
viewstring:='';
move(buffer^,pchar(@rbuf^),bufferlength);//[red]这句出错[/red]
for i:=1 to bufferlength do
viewstring:=viewstring+inttohex(rbuf,2)+'';
viewstring:='接收'+viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('');
end;

end.
 
这样看看

move(buffer^,rbuf[1],bufferlength);
 
谢谢了,现在没有设备,不能调试,但程序通过了。给你分。ok
 
或者
move(buffer^,pchar(@rbuf),bufferlength);
 
后退
顶部