📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
FName = 'test.txt';
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure ChangeFileCase;
end;
var
Form1: TForm1;
UCase : boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
//转为大写
begin
UCase := True;
ChangeFileCase;
end;
procedure TForm1.Button2Click(Sender: TObject);
//转为小写
begin
UCase := False;
ChangeFileCase;
end;
procedure TForm1.FormCreate(Sender: TObject);
//向Memo控件中导入文本
begin
memo1.Lines.LoadFromFile(FName);
UCase := True;
end;
procedure tform1.ChangeFileCase;
//通过内存映射改变字母的大小写
var
FFileHandle: THandle; //保存文件句柄
FMapHandle: THandle; //保存文件映射的句柄
FFileSize: Integer; //保存文件大小
FData: PByte;
PData: PChar;
begin
if not FileExists(FName) then //判断文件是否存在
raise Exception.Create('文件不存在')
else
//取得文件句柄
FFileHandle := FileOpen(FName, fmOpenReadWrite);
if FFileHandle = INVALID_HANDLE_VALUE then
raise Exception.Create('不能打开文件');
try
FFileSize := GetFileSize(FFileHandle, Nil);
//生成文件映射句柄
FMapHandle := CreateFileMapping(FFileHandle, nil,
PAGE_READWRITE, 0, FFileSize, nil);
if FMapHandle = 0 then
raise Exception.Create('不能生成映射文件');
finally
CloseHandle(FFileHandle);
end;
try
FData := MapViewOfFile(FMapHandle, FILE_MAP_ALL_ACCESS, 0, 0, FFileSize);
if FData = Nil then
raise Exception.Create('不能生成文件视图');
finally
CloseHandle(FMapHandle);
end;
//转换大小写
try
PData := PChar(FData);
inc(PData, FFileSize);
PData^ := #0;
if UCase then
StrUpper(PChar(FData))
else
StrLower(PChar(FData));
finally
UnmapViewOfFile(FData);
end;
memo1.Lines.Clear;
memo1.Lines.LoadFromFile(FName);
//重新导入文件中的内容
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -