首页 > 代码库 > Delphi Memory-Mapped File简单示例
Delphi Memory-Mapped File简单示例
{Copyright ?1999 by Delphi 5 Developer‘s Guide - Xavier Pacheco and Steve Teixeira}unit MainFrm;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;const FName = ‘test.txt‘;type TMainForm = class(TForm) btnUpperCase: TButton; memTextContents: TMemo; lblContents: TLabel; btnLowerCase: TButton; procedure btnUpperCaseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnLowerCaseClick(Sender: TObject); public UCase: Boolean; procedure ChangeFileCase; end;var MainForm: TMainForm;implementation{$R *.DFM}procedure TMainForm.btnUpperCaseClick(Sender: TObject);begin UCase := True; ChangeFileCase;end;procedure TMainForm.btnLowerCaseClick(Sender: TObject);begin UCase := False; ChangeFileCase;end;procedure TMainForm.FormCreate(Sender: TObject);begin memTextContents.Lines.LoadFromFile(FName); // Change to upper case by default. UCase := True;end;procedure TMainForm.ChangeFileCase;var FFileHandle: THandle; // Handle to the open file. FMapHandle: THandle; // Handle to a file-mapping object FFileSize: Integer; // Variable to hold the file size. FData: PByte; // Pointer to the file‘s data when mapped. PData: PChar; // Pointer used to reference the file data.begin { First obtain a file handle to the file to be mapped. This code assumes the existence of the file. Otherwise, you can use the FileCreate() function to create a new file. } if not FileExists(FName) then raise Exception.Create(‘File does not exist.‘) else FFileHandle := FileOpen(FName, fmOpenReadWrite); // If CreateFile() was not successful, raise an exception if FFileHandle = INVALID_HANDLE_VALUE then raise Exception.Create(‘Failed to open or create file‘); try { Now obtain the file size which we will pass to the other file- mapping functions. We‘ll make this size one byte larger as we need to append a null-terminating character to the end of the mapped-file‘s data.} FFileSize := GetFileSize(FFileHandle, Nil); { Obtain a file-mapping object handle. If this function is not successful, then raise an exception. } FMapHandle := CreateFileMapping(FFileHandle, nil, PAGE_READWRITE, 0, FFileSize, nil); if FMapHandle = 0 then raise Exception.Create(‘Failed to create file mapping‘); finally // Release the file handle CloseHandle(FFileHandle); end; try { Map the file-mapping object to a view. This will return a pointer to the file data. If this function is not successful, then raise an exception. } FData := MapViewOfFile(FMapHandle, FILE_MAP_ALL_ACCESS, 0, 0, FFileSize); if FData = http://www.mamicode.com/Nil then>
Delphi Memory-Mapped File简单示例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。