unit UOpenSave;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids,StrUtils;//添加StrUtils引用
type
TFOpenSave = class(TForm)
Memo1: TMemo;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
BOpen: TButton;
BSave: TButton;
BExit: TButton;
BNew: TButton;
procedure BOpenClick(Sender: TObject);
procedure BSaveClick(Sender: TObject);
procedure BExitClick(Sender: TObject);
procedure BNewClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FOpenSave: TFOpenSave;
CurFile:String; //表示系统中的当前文件的文件名
implementation
{$R *.dfm}
procedure TFOpenSave.BOpenClick(Sender: TObject);
var
FileHandle: Integer; //文件句柄
FileLength: Integer; //文件长度
BytesRead: Integer;
Buffer: PChar;
begin
if OpenDialog1.Execute then
begin
//读取文件内容,并在TMemo组件中显示
try
//将要打开的文件的文件名设置为当前文件名
CurFile := OpenDialog1.FileName;
FileHandle := FileOpen(CurFile, fmOpenRead);
FileLength := FileSeek(FileHandle,0,2);
FileSeek(FileHandle,0,0);
//如果文件的长度超过了TMemo组件所能显示的字符数的最大值,则对其进行截取
if FileLength > Memo1.MaxLength then
FileLength := Memo1.MaxLength ;
//分配缓冲区,用于保存文件中的数据
Buffer := PChar(AllocMem(FileLength + 1));
BytesRead := FileRead(FileHandle, Buffer^, FileLength);
FileClose(FileHandle);
//将缓冲区中的数据显示在TMemo组件中
Memo1.Text :=Buffer;
finally
FreeMem(Buffer); //释放缓冲区
end;
end; //if
end;
procedure TFOpenSave.BSaveClick(Sender: TObject);
var
FileLength: Integer; //写入的文件的长度
IfLoop:Boolean; //判断是否已选择到合适的文件名
FileHandle: Integer; //文件句柄
Buffer: PChar;
MText: String;
begin
IfLoop :=True;
if CurFile='' then
while IfLoop do
begin
IfLoop :=False;
if SaveDialog1.Execute then
begin
CurFile:= SaveDialog1.FileName ;
if not AnsiContainsStr(CurFile,'.') then
CurFile := CurFile +'.txt'; //添加文件名后缀
if FileExists(SaveDialog1.FileName) then
begin
if MessageDlg('您所指定的文件已存在,是否替换?',
mtConfirmation, [mbYes, mbNo], 0) = mrNo then
IfLoop:=True; //如果要重新选择,则再次弹出文件保存对话框
end ;
end ;//if SaveDialog1.Execute then
end; //while
//分配缓冲区
MText := Memo1.Text;
FileLength := Length(MText);
Buffer := PChar(AllocMem(FileLength + 1));
StrPCopy(Buffer,MText);
//保存文件
try
FileHandle := FileCreate(CurFile);
FileWrite(FileHandle, Buffer^, FileLength);
FileClose(FileHandle);
finally
FreeMem(Buffer); //释放缓冲区
end;
end;
procedure TFOpenSave.BExitClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TFOpenSave.BNewClick(Sender: TObject);
begin
Memo1.Text :='';
CurFile :='';
end;
end.
文本编辑器
最新推荐文章于 2025-03-14 13:59:19 发布
1883

被折叠的 条评论
为什么被折叠?



