Delphi中用于读写的文件类型精华篇

Delphi中用于读写的文件类型精华篇,第1张

Delphi中用于读写的文件类型精华篇,第2张

一、旧pascal文件类型
用文件变量表示的文件类型,如F: text、F: file。定义了三种类型:类型化的、非类型化的、字符型的和一些Delphi文件操作函数,如AssignPrn、Writeln,这些函数与Windows文件句柄不兼容。

二。Windows文件句柄(handle)

面向对象Pascal的文件句柄封装了Windows文件句柄的类型,文件操作函数库封装了Windows API函数。例如,“Fileread”意味着调用Windows API号“readfile”。Delphi提供了一个Windows API操作接口。如果熟悉Windows API,可以使用Windows文件语句操作文件。

三。文件流

文件流是TFileStream类的对象实例,文件流是一种高级文件操作类型。TFileStream提供了一个handle属性,可用于操作Windows文件句柄类型。

如何选择文件类型

Windows文件句柄是一种较低级的文件操作类型,提供灵活的同步和异步文件读写控制。下面提供了使用Windows文件句柄类型的同步和异步文件操作的伪代码描述:

synchron ization:b result = readfile(hfile,& inbuffer,nbytes to read,& nbytes read,null);
//检查eof
if(b result & & nBytesRead = = 0,){
//我们在文件的末尾
}


异步操作://设置重叠结构字段
g overlapped . offset = 0;
gOverLapped。offset high = 0;
gover lapped . he vent = NULL;
//尝试异步读取操作
bResult = ReadFile(hFile,&inBuffer,nBytesToRead,
& gover lapped);
//如果有问题,或者异步。操作仍在进行中...
如果(!br sult)
{
//处理错误代码
开关(dwError = GetLastError())
{
{
//我们在调用ReadFile
//代码处理那个
}
case ERROR _ IO _ PENDING:
{
//的过程中到达了文件的末尾
//检查异步读取的结果
bResu = GetOverlappedResult(hFile,&gOverlapped,
&nBytesRead,FALSE);
//如果有问题...
如果(!br sult)
{
//处理错误代码
开关(dwError = GetLastError())
{
case ERROR _ HANDLE _ EOF:
{
//我们已到达文件结尾
file://during/异步操作
}
//处理其他错误情况
}
}
}
}//结束case


虽然Windows文件处理提供了灵活的文件控制,但是有必要编写更多的错误处理代码。如果不熟悉WindowSAPI,使用Delphi推荐的旧文件变量类型。

Delphi的旧文件类型使用AssignFile,将文件变量与物理文件相关联,通过对Delphi定义的文件变量的各种操作来完成对文件的访问和操作。它很容易使用。下面提供文件变量类型的操作码描述:var
F:TextFile;
S:string;
begin
if OpenDialog1。执行然后{显示打开的对话框}
begin
AssignFile(F,OpenDialog1。文件名);{在对话框中选择的文件}
重置(F);
Readln(F,S);{读出文件的第一行}
Edit1。text:= S;{将字符串放入TEdit控件}
close file(F);
end;
end;


File stream是stream类的子类,所以使用它的一个好处是可以自动继承其父类的属性,并且可以很容易地与其他stream类进行互操作。例如,如果您想将动态内存块写入磁盘,可以使用TFileStream和TMemoryStream来完成。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi中用于读写的文件类型精华篇

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情