很多参加计算机职称考试的一些朋友肯定用过无忧考系统,这套系统把所有题库放在一些Access文件里面,直接用access打开看不到明文,似乎加密了,其实仔细分析下,他存储的格式是RTF,只不过去掉了些RTF文件的关键信息.为了方便浏览(因为他有一些表之间的关联),特写了一个Delphi的小工具..下面给出一些关键的代码.
1
unit MainForm;
2![](/Images/OutliningIndicators/None.gif)
3
interface
4![](/Images/OutliningIndicators/None.gif)
5
uses
6
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7
Dialogs, StdCtrls, Grids, DBGrids,DB,ADODB, ComCtrls;
8![](/Images/OutliningIndicators/None.gif)
9
type
10
TForm1 = class(TForm)
11
Button1: TButton;
12
SaveDialog1: TSaveDialog;
13
OpenDialog1: TOpenDialog;
14
Button2: TButton;
15
Button3: TButton;
16
ProgressBar1: TProgressBar;
17
procedure Button1Click(Sender: TObject);
18
procedure Button2Click(Sender: TObject);
19
procedure Button3Click(Sender: TObject);
20
private
21
{ Private declarations }
22
public
23
{ Public declarations }
24
end;
25
function SaveFiledToFile(myfield:TField;FilePath:String;filename:String):Boolean;
26
var
27
Form1: TForm1;
28![](/Images/OutliningIndicators/None.gif)
29
implementation
30![](/Images/OutliningIndicators/None.gif)
31
uses DataDM,StrUtils;
32![](/Images/OutliningIndicators/None.gif)
33
{$R *.dfm}
34
var
35
DataBaseName:string;
36
ResultFileName:string;
37
iCount : Integer;
38
function SaveFiledToFile(myfield:TField;FilePath:String;filename:String):Boolean;
39
var
40
bs:TADOBlobStream;
41
allPath:String;
42
begin
43
bs:=TADOBlobStream.Create(TBlobField(myfield),bmRead);
44
try
45
if RightStr(trim(FilePath),1)<>'\' then
46
allPath:=FilePath+'\'+FileName
47
else
48
allPath:=filePath+FileName;
49
if FileExists(allPath) then
50
DeleteFile(allPath);
51
bs.SaveToFile(allpath);
52
finally
53
bs.Free;
54
end;
55
Result:=True;
56
end;
57![](/Images/OutliningIndicators/None.gif)
58
procedure TForm1.Button1Click(Sender: TObject);
59
var
60
titleQR : TADOQuery; //题干及答案
61
choiceQR : TADOQuery; //题选项
62
tempFile : TextFile; //临时文件
63
tempString,tsFileName: String;
64
function GetAnswer(encode:Integer):String;
65
begin
66
case encode of
67
1: Result:='A';
68
2: Result:='B';
69
4: Result:='C';
70
8: Result:='D';
71
end;
72
end;
73
begin
74![](/Images/OutliningIndicators/None.gif)
75
tsFileName := ExtractFileDir(Application.ExeName)+ '\TemplateStart.txt';
76
//ShowMessage(tsfileName);exit;
77
if not FileExists(DataBaseName) then
78
begin
79
ShowMessage('源数据库文件不存在,请重新仔细选择!');
80
exit;
81
end;
82
if FileExists(ResultFileName) then
83
begin
84
if MessageDlg('目标文件已存在,继续的话将被覆盖,是否继续?',
85
mtConfirmation, [mbYes, mbNo],0) = mrNo then
86
begin
87
exit;
88
end;
89
end;
90![](/Images/OutliningIndicators/None.gif)
91
if Length(ResultFileName)=0 then
92
begin
93
ShowMessage('请返回选择结果文件存放位置');
94
exit;
95
end;
96
// SetLength();
97
SetLength(tsFileName,Length(tsFileName));
98
SetLength(ResultFileName,Length(ResultFileName));
99
CopyFile(PChar(tsFileName),PChar(ResultFileName),False);
100
AssignFile(tempfile,ResultFileName);
101
Append(tempFile);
102
titleQR := TADOQuery.Create(nil);
103
GaoZhiDM.DataConn.Connected := True;
104
titleQR.Connection := GaoZhiDM.DataConn;
105
titleQr.SQL.Text := 'SELECT * FROM tbl_operation where c_recno=''010400362'' ORDER BY C_RECNO ';
106
choiceQR := TADOQuery.Create(nil);
107
choiceQR.Connection := GaoZhiDM.DataConn;
108
choiceQR.SQL.Text := 'SELECT * FROM tbl_choicevice WHERE C_recno= :recordno';
109
iCount:=0;
110
try
111
titleQR.Open;
112
ProgressBar1.Max := titleQR.RecordCount;
113
while not titleQR.Eof do
114
begin
115
{ ProgressBar1.Position := iCount;
116
Application.ProcessMessages;
117
iCount:=iCount+1;
118
tempString := IntToStr(iCount) + ':' ;
119
tempString := tempString + titleQR.FieldValues['M_TITLE'];
120
tempString := tempString+'\par ';
121![](/Images/OutliningIndicators/InBlock.gif)
122
WriteLn(tempFile,tempString);}
123
SaveFiledToFile(titleQr.FieldByName('o_rudecont'),'g:\temp','a.dat');
124
titleQr.Next;
125
end;
126
WriteLn(tempFile,' \par }}');
127
finally
128
CloseFile(tempFile);
129
if choiceQR.Active then
130
begin
131
choiceQR.Close;
132
end;
133
if titleQR.Active then
134
begin
135
titleQR.Close;
136
end;
137
titleQR.Free;
138
choiceQR.Free;
139
end;
140
ShowMessage('数据已处理完毕!');
141
end;
142![](/Images/OutliningIndicators/None.gif)
143
procedure TForm1.Button2Click(Sender: TObject);
144
begin
145
if OpenDialog1.Execute then
146
begin
147
DataBaseName := OpenDialog1.FileName;
148
//Showmessage(DataBaseName);
149
if GaoZhiDM.DataConn.Connected then
150
GaoZhiDm.DataConn.Close;
151
GaoZhiDM.DataConn.ConnectionString :=
152
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataBaseName+';Persist Security Info=False';
153
end;
154
end;
155![](/Images/OutliningIndicators/None.gif)
156
procedure TForm1.Button3Click(Sender: TObject);
157
begin
158
if SaveDialog1.Execute then
159
begin
160
ResultFileName := SaveDialog1.FileName;
161
// ShowMessage(ResultFileName);
162
end;
163
end;
164![](/Images/OutliningIndicators/None.gif)
165
end.
166![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)
71
![](/Images/OutliningIndicators/None.gif)
72
![](/Images/OutliningIndicators/None.gif)
73
![](/Images/OutliningIndicators/None.gif)
74
![](/Images/OutliningIndicators/None.gif)
75
![](/Images/OutliningIndicators/None.gif)
76
![](/Images/OutliningIndicators/None.gif)
77
![](/Images/OutliningIndicators/None.gif)
78
![](/Images/OutliningIndicators/None.gif)
79
![](/Images/OutliningIndicators/None.gif)
80
![](/Images/OutliningIndicators/None.gif)
81
![](/Images/OutliningIndicators/None.gif)
82
![](/Images/OutliningIndicators/None.gif)
83
![](/Images/OutliningIndicators/None.gif)
84
![](/Images/OutliningIndicators/None.gif)
85
![](/Images/OutliningIndicators/None.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/None.gif)
88
![](/Images/OutliningIndicators/None.gif)
89
![](/Images/OutliningIndicators/None.gif)
90
![](/Images/OutliningIndicators/None.gif)
91
![](/Images/OutliningIndicators/None.gif)
92
![](/Images/OutliningIndicators/None.gif)
93
![](/Images/OutliningIndicators/None.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/None.gif)
96
![](/Images/OutliningIndicators/None.gif)
97
![](/Images/OutliningIndicators/None.gif)
98
![](/Images/OutliningIndicators/None.gif)
99
![](/Images/OutliningIndicators/None.gif)
100
![](/Images/OutliningIndicators/None.gif)
101
![](/Images/OutliningIndicators/None.gif)
102
![](/Images/OutliningIndicators/None.gif)
103
![](/Images/OutliningIndicators/None.gif)
104
![](/Images/OutliningIndicators/None.gif)
105
![](/Images/OutliningIndicators/None.gif)
106
![](/Images/OutliningIndicators/None.gif)
107
![](/Images/OutliningIndicators/None.gif)
108
![](/Images/OutliningIndicators/None.gif)
109
![](/Images/OutliningIndicators/None.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/None.gif)
113
![](/Images/OutliningIndicators/None.gif)
114
![](/Images/OutliningIndicators/None.gif)
115
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)