A
archy
Unregistered / Unconfirmed
GUEST, unregistred user!
遍一个加密程序,主要用到
主窗体Unit frmMain,排序Unit sort.
排序Unit sort
以下皆只列出主要代码
Unit sort;
interface
type
rcdtype=record
key:char;
data:array [1..maxsize] of char;
end;
listtype=array [0..maxKey] of rcdtype;
Tsort = class
public
procedure binsort(var r:array of rcdtype
pwl:integer);
end;
implementation
.......
.......
一开始我在frmMain中这样封装
uses sort;
type
TfrmMain = class(TForm)
GroupBox1: TGroupBox;
Memo1: TMemo;
btnOpen1: TSpeedButton;
cmb1: TComboBox;
....
procedure btnOpen1Click(Sender: TObject);
procedure btnOpen2Click(Sender: TObject);
....
procedure Jiami1(mm:Tstrings);
private
//********
sort:Tsort;
//********
var
frmMain: TfrmMain;
filename:string;
implementation
procedure TfrmMain.Jiami1(mm:Tstrings);
{.......
其中我用到了sort排序
sort:=tsort.Create;
sort.binsort(r,pwl)
// r为数组记录,pwl为关键字
sort.free;
......}
***************************************8
之所以我将sort:Tsort放在private中是因为这样sort可以在TrmMain的所有子过程中被使用,不用再sort前加frmMain.那么累赘了。而且今后可以使用其他更好的排序算法。程序是完全成功通过的。
可是后来我觉得应该把加密子过程procedure Jiami1(mm:Tstrings)也分出来,更能符合模块化和封装的思想,于是程序变成了三块:主窗体Unit frmMain,各种加密方法Unit codeOperation,和排序Unit sort.
我这样封装
unit codeOperation;
interface
uses sort;
....
type
TcodeOperation = class
private
sort:Tsort;
public
procedure Jiami1(mm:Tmemo;password:string;Var mmTarget:Tmemo);
end;
implementation
procedure TcodeOperation.Jiami1(mm: Tmemo
password: string;Var mmTarget:Tmemo);
{....
其中用到了sort排序
sort:=tsort.Create;
sort.binsort(r,pwl);
sort.free;
.....}
*******************************************
unit frmMain;
interface
uses codeOperation;
type
TfrmMain = class(TForm)
....
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Memo1: TMemo;
Memo2: TMemo;
procedure btnCloseClick(Sender: TObject);
...
procedure btnJiamiClick(Sender: TObject);
private
{ Private declarations }
code:TcodeOperation;
public
end;
var
frmMain: TfrmMain;
filename:string;
implementation
procedure TfrmMain.btnJiamiClick(Sender: TObject);
begin
code.jiami1(memo1,txt1.text,memo2)
//memo1原文,txt1.text密钥,memo2密文
end;
可是为何现在一运行到sort.binsort(r,pwl);就发生错误呢?
另:1 我这样的封装思想对吗?
2 象我这样uses 就不能放在implementation中了?
谢谢!!
主窗体Unit frmMain,排序Unit sort.
排序Unit sort
以下皆只列出主要代码
Unit sort;
interface
type
rcdtype=record
key:char;
data:array [1..maxsize] of char;
end;
listtype=array [0..maxKey] of rcdtype;
Tsort = class
public
procedure binsort(var r:array of rcdtype
pwl:integer);
end;
implementation
.......
.......
一开始我在frmMain中这样封装
uses sort;
type
TfrmMain = class(TForm)
GroupBox1: TGroupBox;
Memo1: TMemo;
btnOpen1: TSpeedButton;
cmb1: TComboBox;
....
procedure btnOpen1Click(Sender: TObject);
procedure btnOpen2Click(Sender: TObject);
....
procedure Jiami1(mm:Tstrings);
private
//********
sort:Tsort;
//********
var
frmMain: TfrmMain;
filename:string;
implementation
procedure TfrmMain.Jiami1(mm:Tstrings);
{.......
其中我用到了sort排序
sort:=tsort.Create;
sort.binsort(r,pwl)
// r为数组记录,pwl为关键字
sort.free;
......}
***************************************8
之所以我将sort:Tsort放在private中是因为这样sort可以在TrmMain的所有子过程中被使用,不用再sort前加frmMain.那么累赘了。而且今后可以使用其他更好的排序算法。程序是完全成功通过的。
可是后来我觉得应该把加密子过程procedure Jiami1(mm:Tstrings)也分出来,更能符合模块化和封装的思想,于是程序变成了三块:主窗体Unit frmMain,各种加密方法Unit codeOperation,和排序Unit sort.
我这样封装
unit codeOperation;
interface
uses sort;
....
type
TcodeOperation = class
private
sort:Tsort;
public
procedure Jiami1(mm:Tmemo;password:string;Var mmTarget:Tmemo);
end;
implementation
procedure TcodeOperation.Jiami1(mm: Tmemo
password: string;Var mmTarget:Tmemo);
{....
其中用到了sort排序
sort:=tsort.Create;
sort.binsort(r,pwl);
sort.free;
.....}
*******************************************
unit frmMain;
interface
uses codeOperation;
type
TfrmMain = class(TForm)
....
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Memo1: TMemo;
Memo2: TMemo;
procedure btnCloseClick(Sender: TObject);
...
procedure btnJiamiClick(Sender: TObject);
private
{ Private declarations }
code:TcodeOperation;
public
end;
var
frmMain: TfrmMain;
filename:string;
implementation
procedure TfrmMain.btnJiamiClick(Sender: TObject);
begin
code.jiami1(memo1,txt1.text,memo2)
//memo1原文,txt1.text密钥,memo2密文
end;
可是为何现在一运行到sort.binsort(r,pwl);就发生错误呢?
另:1 我这样的封装思想对吗?
2 象我这样uses 就不能放在implementation中了?
谢谢!!