yunqian09 发表于 2010-2-24 17:15:56

关于delphi一段代码,高手指点 if (p[5]='*') and (p[8]='*') and ( p[9]='*'

Procedure TMainForm.TimerTimer(Sender: TObject);
var
   //afile:   TFileStream;
   str,da,StrToWrite,Str_Time : string;
   ii:integer;
   p: PChar;
Begin

p := StrPos(pchar(@rbuf), '#**');


if (p='*') and (p='*') and ( p='*') and (p='%') then//
begin

   memo1.lines.add('viewstring');
end;
//------------------------------------------------------------



End;
其中 rbuf 中存的是串口接收到的数据

一运行就在if 这个位置发现错误我delphi初学,高手指点
谢谢

yunqian09 发表于 2010-2-24 17:26:38

StrPos函数说明问题好像就出在这个函数

首部 function StrPos(const Str1, Str2: PChar): PChar; $[SysUtils.pas
功能 返回指针字符串Str2在Str1中第一个出现的地址
说明 没有找到则返回空指针;StrPos('12345', '3') = '345'
参考 <NULL>
例子 Edit3.Text := StrPos(PChar(Edit1.Text), PChar(Edit2.Text));

yunqian09 发表于 2010-2-25 16:54:34

if (p='*') and (p='*') and ( p='*') and (p='%') then//   


这一句有问题   不能保证 p 存在   应该验证p的长度大于10
页: [1]
查看完整版本: 关于delphi一段代码,高手指点 if (p[5]='*') and (p[8]='*') and ( p[9]='*'