⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 Delphi实效编程百例的随书源代码 这是其中的程序控制部分
💻 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 + -