delphi 如何快速读取文本文件


本文整理自网络,侵删。

 function R(const FileName: string): string;
var
M: TFileStream;
begin
M := TFileStream.Create(FileName, fmOpenRead);
try
SetLength(Result, M.Size);
M.Read(Result[1], M.Size);
finally
M.Free;
end;
end;

Solve 2:As an alternative to Christian's suggestion, you can also use a memory-mapped file:function MMFileToString(const AFilename: string): string;
var
hFile: THandle;
hFileMap: THandle;
hiSize: DWORD;
loSize: DWORD;
text: string;
view: pointer;
begin
Result := '';
if AFilename = '' then
Exit;
if not FileExists(AFilename) then
Exit;
{Open the file}
hFile := CreateFile(PChar(AFilename), GENERIC_READ, FILE_SHARE_READ, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hFile <> INVALID_HANDLE_VALUE then
begin
loSize := GetFileSize(hFile, @hiSize);
{File was opened successfully, now map it:}
hFileMap := CreateFileMapping(hFile, nil, PAGE_READONLY, hiSize,
loSize, 'TextForString');
if (hFileMap <> 0) then
begin
if (GetLastError() = ERROR_ALREADY_EXISTS) then
begin
MessageDlg('Mapping already exists - not created.', mtWarning, [mbOk], 0);
CloseHandle(hFileMap)
end
else
begin
try
{File mapped successfully, now map a view of the file into
the address space:}
view := MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0);
if (view <> nil) then
begin {View mapped successfully}
CloseHandle(hFile);
{Close file handle - as long is view is open it will persist}
SetLength(Result, loSize);
Move(view^, Result[1], loSize);
end
else
MessageDlg('Unable to map view of file. ' + SysErrorMessage(GetLastError),
mtWarning, [mbOk], 0);
finally
UnmapViewOfFile(view); {Close view}
CloseHandle(hFileMap); {Close mapping}
end
end
end
else
begin
MessageDlg('Unable to create file mapping. ' + SysErrorMessage(GetLastError),
mtWarning, [mbOk], 0);
end;
end
else
begin
MessageDlg('Unable to open file. ' + SysErrorMessage(GetLastError),
mtWarning, [mbOk], 0);
end;
end;

相关阅读 >>

Delphi 官方提供的六十多个firedac例子

Delphi 获取\xxx\xxxx\1234最后一级名称

Delphi xe5调用外部扫描程序――谷歌 zxing

Delphi 病毒

Delphi 将image组件的图片保存为jpg格式图片方法

关于Delphi xe2的fmx的一点点研究之消息篇

Delphi xe7写的一个http post的小测试程序

如何减小Delphi应用程序(exe)的大小

常用的几个网络函数和系统函数

Delphi xe2 将域名转ip

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...