明天考六级,在坚强地面对模拟题一个小时,我放弃了,再一次验证了英语是不可突击的。随手拿起一本书, 是前两天从图书管淘到一本好书。
《软件加密技术从入门到精通》史子荣编著。再次翻开它,只想今天入门。可是那Delphi源码怎么看怎么不顺眼。这个作者也真是的,为啥不用C/C++啊(本人算是一个C++程序员)。
本着革命不放弃的精神,我毅然装上了Delphi 2007.玩了半个小时后,不断的新建,删除,还是没有头绪。看着第4页上用于读着注册表的源码,TForm1,Button.咋看咋这么熟啊,这不是MFC中的控件嘛。这下好了,我就瞄准了Form编程。
在Welcome Page 中选择 New Project | VCL Forms Application
然后 File|Save Project As ... ...
接下来就是添加Button控件,嘿嘿,这点难不倒我,我右下角角落找到控件栏,加上。接着玩,发现双击Buttion控件后,源码中出现
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
猜想这是一个Button响应函数,似乎没有问题。
在uses 中添加 Registry
然后 在procedure TForm1.Button1Click(Sender: TObject);可添加变量和过程,发现有
Edit1.Text := Reg.ReadString('lfFacename'); 不说在Foem中添加Edit控件,
目前为止,一切顺历。
运行, OK , 出现对话框, 点击Button,没反应。
在运行框中输入regedit打开注册表编织,发现在Notepad中没有lfFaceName属性。
在东摆西摆,突然想到它没有这个属性,咱不是可以自己加嘛。右键|New|String Value. 输入lfFaceName, 至于属性的值想怎么加就怎么加吧。
再次运行,OK, 下面附上今天的源代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Reg:TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('/Software/Microsoft/Notepad', False) then
Edit1.Text := Reg.Readstring('BitEncrypt');
Reg.CloseKey;
Reg.Destroy;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('/Software/Microsoft/Notepad', False) then
Reg.WriteString('BitEncrypt', Edit2.Text);
Reg.CloseKey;
Reg.Destroy;
end;
end.
以下是INI文件操作的源代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IniFiles;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
IniFileName : String;
MyIniFile: TIniFile;
begin
// Ini 文件名和路径
IniFileName := ExtractFilePath(Application.ExeName)+'MyIni.ini';
MyIniFile := TIniFile.Create(IniFileName); // 创建TIniFile对象
MyIniFile.WriteString('软件加密','技术内容',Edit1.Text); // 写入信息
MyIniFile.Destroy; // 释放对象
end;
procedure TForm1.Button2Click(Sender: TObject);
var
IniFileName : String;
MyIniFile : TIniFile;
begin
// ini文件名和路径
IniFileName:=ExtractFilePath(Application.ExeName)+'MyIni.ini';
MyIniFile := TIniFile.Create(iniFileName); // 创建TIniFile对象
Edit2.Text := MyIniFile.ReadString ('软件加密','技术内容','错误'); // 读取信息
// Edit2.Text := MyIniFile.ReadString ('软件加密','加密内容'); // 读取信息 [DCC Error] Unit1.pas(50): E2035 Not enough actual parameters
MyiniFile.Destroy;
end;
end.
对话框的样式如图片所示: