请教pos函数(delphi) ,根据字符串位置读取

来源:百度知道 编辑:UC知道 时间:2024/06/03 13:55:06
菜鸟想实现如下功能:
from 窗口有一个按钮,有一两个EDIT,edit2显示的是本机硬盘序列号。
中间的八位数为硬盘序列号。
在edit1 控件中有如下内容:

1949年(====)Y27G3ADC<====>2008年
1949年(====)Y27G3AD1<====>2008年
1949年(====)Y27G3AD2<====>2008年

求助,当单击一下按钮时,想实现:
读取edit1里面的中间八位数与edit2的数对比,如果相同则弹出“有情况,要求动手”,如果不同,则弹出警告"这里没情况"

方法:首先在Edit1中的字符串“1949年(====)Y27G3ADC<====>2008年 ”中找到“(====)”和“<====>”的位置,然后将其间的字符串提取出来即可。代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2: string;
p1,p2: integer;
begin
s1 := Edit1.Text;
p1 := Pos('(====)',s1);
p2 := Pos('<====>',s1);
s2 := Copy(s1,p1+6,p2-p1-6)//s2即为中间那8位数
if s2 = Edit2.Text then
begin
Application.MessageBox('有情况,要求动手','提示',MB_OK+MB_ICONINFORMATION);
end;
end;

如果Edit1中的字符串格式是固定的那就可以简单点
var
str, tmpstr: String;
begin
str := Edit1.Text;
//从第13个字符(就是')'后的第1个字符)开始取8个字符
tmpstr := Copy(str, 13, 8);
if tmpstr = Edit2.Text then
ShowMessage('有情况')
else
ShowMessage('没情况');
end;