Delphi 在线帮助中的 SDK.
解决方案 »
- 如何让sql2000 的事件查看器,跟不到 delphi 做的软件里面的 sql 语句.
- 数据连接问题?
- 咨询
- 帮忙看看为什么执行不下去了??
- 我在Package中定义了一个方法和过程,怎么在其他程序调用这个方法和过程,如果是类了?
- CGI Stand - alone executable 为何一闪而过 ? 结果没有出现在 Ie 中
- 》》》》如何实现通过SERVERSOCKET 在对客户端接受到的数据之后,立即进行发送数据。。
- Acess 中Insert语句执行的时候产生语法错误,但是可以保证语法符合SQL89请给解决方法
- 中国1-0击败阿曼 首次进入世界杯 !!!!!
- 各位老手!用adoquery控件如何实现一对多关系(即主零关系)?
- 刚刚答辩完,教授们提的问题太无厘头,郁闷!
- 哪有FoxMail的源程序下载,什么版本都可以!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;type
TForm1 = class(TForm)
Panel1: TPanel;
btnEncrypt: TButton;
memFileContent: TMemo;
edtPassword: TEdit;
Label1: TLabel;
Open: TSpeedButton;
edtFileName: TEdit;
Label2: TLabel;
OpenDialog1: TOpenDialog;
procedure btnEncryptClick(Sender: TObject);
procedure OpenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
FileName: string;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btnEncryptClick(Sender: TObject);
var
FileHandle: HFILE; // 文件句柄
MapHandle: THandle; // 文件内存映射句柄
FileSize: Integer; // 文件大小
Data: PByte; // 文件数据区指针
PData: PChar; // 文件数据区指针
CurPos, SubStrPos: Integer; // 文件数据区开始位置, 密码字符串当前位置
SubStr: PChar; // 密码字符串
begin
FileHandle := FileOpen(FileName, fmOpenReadWrite);
if FileHandle = INVALID_HANDLE_VALUE then
raise Exception.Create('Cannot open file.');
FileSize := GetFileSize(FileHandle, nil);
{ 可以省去建立内存映射文件这一步, 直接使用文件的指针,
那就简单多了. }
try
MapHandle := CreateFileMapping(FileHandle, nil, PAGE_READWRITE, 0,
FileSize, nil);
if MapHandle = 0 then
raise Exception.Create('Failed to create file mapping.');
finally
CloseHandle(FileHandle);
end;
try
Data := MapViewOfFile(MapHandle, FILE_MAP_ALL_ACCESS, 0, 0, FileSize);
if Data = nil then
raise Exception.Create('Failed to map view of file.');
finally
CloseHandle(MapHandle);
end;
{ 开始工作 }
try
PData := PChar(Data);
Inc(PData, FileSize);
PData^ := #0; // StrUpper(PChar(Data));
Dec(PData, FileSize); { 根据密码加密源文件 }
SubStrPos := 0;
SubStr := PChar(edtPassword.Text);
for CurPos := 0 to FileSize - 1 do
begin
//if PData[CurPos] in ['a'..'z'] then Dec(PData[CurPos], $20)
//else if PData[CurPos] in ['A'..'Z'] then Inc(PData[CurPos], $20);
Byte(PData[CurPos]) := Byte(PData[CurPos]) xor Byte(SubStr[SubStrPos]); // 异或加密
if SubStrPos > Length(SubStr) then SubStrPos := 0;
end; finally
UnmapViewOfFile(Data);
end; memFileContent.Lines.LoadFromFile(FileName);
end;procedure TForm1.OpenClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FileName := OpenDialog1.FileName;
edtFileName.Text := FileName;
memFileContent.Lines.LoadFromFile(FileName);
end;
end;end.