var Form1: TForm1; //窗口变量,不用管它 SS:TStringList;//用于存放通讯录的字符串列表
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);//窗口创建事件 begin ss:=TStringlist.Create;//创建字符串列表 if FileExists('Address.txt') then //如果文件Address.txt存在 ss.LoadFromFile('Address.txt'); //那么把通讯录从Address.txt中载入到字符串列表中 end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); //窗口关闭事件 begin ss.Free;//窗口关闭时释放字符串列表ss占用的内存 end;
procedure TForm1.Button1Click(Sender: TObject);//保存按钮 var s:string; //定义了一个字符串变量 begin if Edit1.Text <>'' then //如果姓名编辑框不为空,那么执行下面的操作 begin s:=Edit1.Text+'|'; //把姓名加上一个'|'赋给s if RadioButton1.Checked then //如果单选框为男的被选中 s:=s+'男' else s:=s+'女'; //则s再加上一个男,否则就加上女 s:=s+'|'+combobox1.Text; //s再加一个 '|',然后加上年龄 s:=s+'|'+edit2.Text; //s再加一个 '|',然后加上电话 s:=s+'|'+edit3.Text; //s再加一个 '|',然后再加上地址 ss.Add(s); //在字符串列表中增加一行 ss.SaveToFile('Address.txt'); //增加一行记录后,再保存到Address.txt文件中 edit1.Text:=''; //设置姓名编辑框为空 edit2.Text:=''; //设置电话编辑框为空 edit3.Text:=''; //设置地址编辑框为空 end; end;
procedure TForm1.Button2Click(Sender: TObject);//取消按钮 begin close; //单击取消按钮,再把窗口关掉,即退出程序 end;
//该函数功能是从字符串列表中查找前面姓名部分和 //一个姓名相同字符串,并返回该字符串 //例如字符串列表为: //刘丽|女|16|13523728888|安阳县白壁镇辛安村 //王朋朋|男|20|13523728821|安阳县崔家桥南街村 //现在我们要查找刘丽,则该函数会返回 //刘丽|女|16|13523728888|安阳县白壁镇辛安村 function TForm1.FindName(name: string): string; var i:integer; //定义一个整数变量 begin result:=''; //先让返回结果为空字符串 for i:=0 to ss.Count-1 do //i从0循环递增到字符串列表的数-1 if copy(ss[i],1,length(name))=name then//length(name)的作用是取得name的长度 begin //copy(ss[i],1,length(name))的作用是获取字符串列表中第i行,从第1个字符开始 result:=ss[i]; //和name相同长度的字符串,如果获取的字符串和姓名一样,则表示找到了 break; //退出循环 end; end;
procedure TForm1.Button3Click(Sender: TObject); //查询按钮被点击事件 var s:string; //定义一个字符串变量 list:TStringList; //定义一个字符串列表变量 begin if edit4.Text <>'' then //如果查询前面要输入姓名的编辑框不为空, begin //则开始执行查询,否则显示'请输入要查询的姓名!' s:=FindName(Edit4.Text); //先看能不能找到对应的字符串记录, if s <>'' then // 如:刘丽|女|16|13523728888|安阳县白壁镇辛安村 begin //如果返回的字符串不为空,则说明找到了,否则就显示"查无此人" list:=TStringlist.Create;//创建字符串列表 list.Delimiter:='|';//设置该字符列表的分隔符为 '|' list.DelimitedText:=s; //设置该字符列表要分隔的字符串为s listbox1.Items.Text:=list.Text; //把分隔后的字符串列表赋给要显示结果的列表框,查询结束! list.Free; //从内存中释放字符串列表 end else showmessage('查无此人'); //没有找到对应的字符串记录 end else showmessage('请输入要查询的姓名!'); end;
procedure TForm1.Edit4KeyDown(Sender: TObject; var Key: Word;//键盘按下事件 Shift: TShiftState); begin if key=13 then//如果回车键按下 self.Button3Click(self);//执行查询按钮被按下的动作 end;