文件内容的格式定义如下:
系列号*用户名*注册码
注意:需要分割的内容里不能含有与分割符相同的字符,选择分割符时要确认分割符不会与需要分割的内容包含的字符相同。不公可以字符作为分割符,也可以采用自定义字符串作为分割符。实现代码 如下:
unit KeyFile;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// 分割字符串
function GetMsg (RootStr, ChildStr : string) : TStringList;
var
iTemp : integer;
begin
result := TStringList.Create;
iTemp := pos(ChildStr, RootStr);
//This property will return or set the current position marker
//for the memo buffer. The first position is at index 0.
while iTemp<>0 do
begin
if iTemp>1 then
//Adds a string to the list.
result.Append(copy(RootStr, 1, iTemp-1));
// 删除RootStr中1到iTemp+length(ChildStr)-1的子串
delete(RootStr, 1, iTemp+length(ChildStr)-1);
iTemp := pos(ChildStr, RootStr);
end;
if RootStr<>' ' then
result.Append(RootStr);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
CustFileName : String;
MsgStr, TempList:TStringList;
begin
CustFileName := ExtractFilePath(Application.ExeName)+'Key.lic';
if FileExists(CustFileName) then
begin
MsgStr := TStringList.Create;
TempList := TStringList.Create;
MsgStr.LoadFromFile(CustFileName);
TempList := Getmsg(MsgStr[0], '*');
// 获取各信息
Edit1.Text := TempList[0];
Edit2.Text := TempList[1];
Edit3.Text := TempList[2];
//释放TStringList对象
MsgStr.Free;
TempList.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
CustFileName :String;
MsgStr : TStrings;
begin
CustFileName := ExtractFilePath(Application.ExeName)+'Key.lic';
MsgStr := TStringList.Create;
MsgStr.Add(Edit1.Text+'*'+Edit2.Text+'*'+Edit3.Text);
MsgStr.SaveToFile(CustFileName);
MsgStr.Free;
end;
end.