Delphi文件操作
Delphi文件操作

var file_name:string;FileWrite, PChar(file_name)^, length(file_name));文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道。
文件的本质是一个数据流,所有的文件实际上是一串二进制序列。
文件管理包括:1、文件操作。
2、目录操作。
3、驱动器操作。
三部分。
1、常见文件操作函数和过程。
、AssignFile过程作用:将一个外部文件的文件名与一个File类型的变量关联,并对变量进行初始化。
原型:procedure AssignFile(var F; FileName: String);F:一个File类型的变量,可以是任何数据类型。
FileName:外部文件的文件名。
、FileExists函数?作用:用于测试指定文件名的文件是否存在。
原型:function FileExists(const FileName: String): Boolean;FileName:文件名。
字符串类型。
注意:如果文件存在,返回True;否则,返回False。
、Append过程作用:为在一个已经存在的文件末尾添加文本做好准备工作。
文件是只写方式打开的。
原型:procedure Append(var F: Text);F: 一个TextFile类型变量。
注意:这是一个对文本类型文件操作的过程。
其中变量F必须和外部文件关联。
如果F没有与外部文件关联,将抛出异常。
如果F已经处于打开状态,则过程会关闭F并重新打开。
文件指针位置将被设置在文件末尾。
、Reset过程作用:对于文本文件,Reset过程将以只读方式打开文件。
对于类型文件和无类型文件,Reset过程将以可读写方式打开文件。
原型:procedure Reset(var F [: File; RecSize: Word ] );F:File类型变量,可以是任何文件类型。
RecSize:文件的大小。
它是一个可选的选项,只有当F为无类型文件时才可以被指定。
Delphi文本文件读写完整操作

//不同数据类型的写入和读取
procedure TForm1.Button7Click(Sender: TObject);
var name: string[6];
age: Word;
birthday: TDate;
begin
AssignFile(F,FileName);
CloseFile(F);
end;
//追加
procedure TForm1.Button3Click(Sender: TObject);
begin
AssignFile(F,FileName);
Append(F); //打开准备追加
Writeln(F, '第三行');
procedure Button4ClБайду номын сангаасck(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
FileName: string = 'c:\temp\test.txt';
//写文件
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(F,FileName);
Rewrite(F); //会覆盖已存在的文件
Reset(F); //只读打开
Memo1.Clear;
while not Eof(F) do
delphi文件的读取和写入

delphi文件的读取和写入概述:Delphi是一种高级编程语言,用于开发Windows应用程序。
在Delphi中,文件的读取和写入是常见的操作,可以通过使用内置的文件处理函数和过程来实现。
本文将详细介绍如何在Delphi中进行文件的读取和写入操作。
一、文件的读取在Delphi中,可以使用TFileStream类来读取文件的内容。
以下是读取文件的步骤:1. 创建TFileStream对象:使用TFileStream类的构造函数创建一个TFileStream对象。
构造函数需要两个参数,第一个参数是文件名,第二个参数是打开文件的模式。
模式可以是fmOpenRead(只读模式)或fmShareDenyNone(允许其他进程访问)。
2. 读取文件内容:调用TFileStream对象的Read方法来读取文件的内容。
Read方法需要两个参数,第一个参数是读取到的数据存放的缓冲区,第二个参数是要读取的字节数。
3. 关闭文件:使用TFileStream对象的Free方法来关闭文件。
示例代码如下:```delphivarFileStream: TFileStream;Buffer: array of Byte;ReadBytes: Integer;beginFileStream := TFileStream.Create('file.txt', fmOpenRead);SetLength(Buffer, FileStream.Size);ReadBytes := FileStream.Read(Buffer[0], FileStream.Size);FileStream.Free;// 处理读取到的文件内容// ...end;```二、文件的写入在Delphi中,可以使用TFileStream类来写入文件的内容。
以下是写入文件的步骤:1. 创建TFileStream对象:使用TFileStream类的构造函数创建一个TFileStream对象。
Delphi文件名操作常用函数

Delphi⽂件名操作常⽤函数Delphi⽂件名操作常⽤函数通过下⾯的函数,可以⽅便地对⽂件名进⾏操作:1. ExpandFileName将当前驱动器名(盘符)、路径名和指定的⽂件名合成⼀个绝对⽂件名。
函数原型如下:function ExpandFileName(const FileName: string): string;返回值为合成的绝对⽂件名。
2. ExpandUNCFileName获取⼀个以U N C格式的包括⽹络驱动器名的绝对⽂件名。
函数原型如下:function ExpandUNCFileName(const FileName: string): string;3. ExtractFileDir从绝对⽂件名中获取⽬录名。
函数原型如下:function ExtractFileDir(const FileName: string): string;4. ExtractFileDrive从绝对⽂件名中获取驱动器号(盘号)。
函数原型如下:function ExtractFileDrive(const FileName: string): string;5. ExtractFileExt从绝对⽂件名中获取⽂件名的扩展名。
函数原型如下:function ExtractFileExt(const FileName: string): string;6. ExtractFileName从绝对⽂件名中获取⽂件名。
函数原型如下:function ExtractFileName(const FileName: string): string;7. ExtractFilePath从绝对⽂件名中获取路径名。
函数原型如下:function ExtractFilePath(const FileName: string): string;8. ExtractRelativePath从绝对⽂件名中获取相对于某⼀个路径的相对路径名。
Delphi 文件操作集锦

Delphi 文件操作集锦Delphi 文件操作集锦时间:2011-5-26来源:yang 作者: peng点击: 11次Delphi 文件操作集锦unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end; varForm1: TForm1; implementationuses activex,comobj,shlobj;{$R *.dfm} function ResolveLink(const ALinkfile: String): String;varlink: IShellLink;storage: IPersistFile;filedata: TWin32FindData;buf: Array[0..MAX_PATH] of Char;widepath: WideString;beginOleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, link)); OleCheck(link.QueryInterface(IPersistFile, storage)); widepath := ALinkFile;Result := ‘unable to resolve link‘;If Succeeded(storage.Load(@widepath[1], STGM_READ)) ThenIf Succeeded(link.Resolve(GetActiveWindow,SLR_NOUPDATE)) ThenIf Succeeded(link.GetPath(buf, sizeof(buf), filedata, SLGP_UNCPRIORITY)) ThenResult := buf;storage := nil;link:= nil;end; // 用法:procedure TForm1.Button1Click(Sender: TObject);beginShowMessage(ResolveLink(‘C:\delphi 7.lnk‘));end; end. 2006-2-16 19:23:20发表评语»»»2006-2-16 19:23:45 在Delphi中获取和修改文件的时间关键词:文件修改时间本文介绍了在Delphi中利用系统函数和Windows API函数调用来获取和修改文件的时间信息的方法。
delphi操纵word(完整版)[精华]
![delphi操纵word(完整版)[精华]](https://img.taocdn.com/s3/m/a1477735bdd126fff705cc1755270722192e598e.png)
一、Delphi程序启动Word采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word二、Delphi程序新建Word文稿格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)Template:使用模板的名称,NewTemplate:新建文档的类型,True表示为模板,False表示为文档DocumentType:文档类型,默认为空白文档Visible:打捞的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False );三、Delphi程序打开Word文稿格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,Format,Encoding,Visible)FileName:文档名(包含路径)Confirmconversions:是否显示文件转换对话框ReadOnly:是否以只读方式打开文档AddToRecentFiles:是否将文件添加到"文件"菜单底部的最近使用文件列表中PassWordDocument:打开此文档时所需要的密码PasswordTemplate:打开此模板时所需要的密码Revert:如果文档已经,是否重新打开文档WritePasswordDocument:保存对文档更改时所需要的密码WritePasswordTemplate:保存对模板进行更改时所需要的密码Format:打开文档时所需使用的文件转换器Encoding:所使用的文档代码页Visible:打开文档的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,AddToRecentFiles:=False);四、Delphi程序保存Word文稿格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password,AddToRecentFiles, WritePassword, ReadOnlyRecommended,EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)FileName:文件名。
Delphi编程中传统文件操作与面向对象的流文件操作

Delphi编程中传统文件操作与面向对象的流文件操作Delphi的很多书讲到文件操作时,都是讲的以前Object Pascal的文件治理功能,其实在Delphi中我感觉更有效率的文件治理功能是利用Delphi中的流对象,利用流对象也加倍符合面向对象编程的思想。
利用流对象进行文件治理,与传统的Object Pascal文件治理相较有哪些优势?Delphi中的流不单单能够针对文件治理操作,还能够处置动态内存数据、网络数据、数据库二进制大对象等多种形式的数据。
在Delphi中,Tstream代表所有流的基类,只是它是一个抽象类,它的各子类实现了它并形成了不同功能的流对象,如TFileStream、TBlobStream、TMemoryStream等,其中TFileStream是操作文件的流类,TBlobStream是针对数据库表中二进制大对象字段的流类,TMemoryStream是处置内存数据的流类。
利用这些不同的流对象就能够完成针对不同数据存储的读取操作。
传统文件治理要求操作文件依照必然的顺序即:打开文件→文件读写→关闭文件。
而流对象的操作方式与传统的方式不同,程序员对流进行所有操作,而不用关切流的另一头数据的真正流向,因此大大简化了编写程序的复杂度,使得文件处置关于用户的透明度更高。
流不但能够处置文件,还能处置动态内存数据、数据库中的二进制大对象数据、网络数据等多种数据存储形式,若是咱们能在程序中利用流的性能,那会改善咱们程序的效率。
说了这么多流的益处,此刻别离介绍一下传统文件操作与流对象操作的异同。
传统文件操作简介:1.文件类型变量与磁盘文件的关联函数原型procedure AssignFile(Var F;FileName :String);F是文件类型变量,FileName表示实际文件名,也能够包括途径。
函数原型procedure Reset(Var F[: File; RecSize: Word ]);F是文件类型变量,其中RecSize表示每次读取记录的字节数。
Delphi 对Txt文件的操作

End;
//逐行读取,顾名思义一行一行的读取内容
Procedure ForTxt(FileName:String);
Var
F:TextFile;
S:String;
Ser:String;
begin
AssignFile(F,FileName);
AssignFile(F,FileName); //将文件名与变量 F 关联
ReWrite(F); //创建Txt文档并命名为 “FileName ”
Closefile(F); //关闭文件 F
End;
//读取指定的TXT文档
Procedure ReadTxt(FileName:String);
Reset(F);
while not EOF(F) do //循环读取
begin
Readln(F,S);
Ser:=Ser+S+#13#10;
end;
CloseFile(F);
end;
Begin
// NewTxt('i:\我的文档\桌面\Delphi对Txt的基本操作.Txt');
Readln;
End.
Procedure AppendTxt(Str:String;FileName:String);
Var
F:TextFile;
Begin
AssignFile(F, FileName);
Append(F); //附上原来的内容以免原内容被清空
Writeln(F, Str); //把内容 Ser 写入文件F
// ForTxt('i:\我的文档\桌面\Delphi对Txt的基本操作.Txt');
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi文件操作变量的数据保存于内存中,随程序运行的结束而结束,若要使程序下次运行时能重复使用或给其他程序员使用,必须保存在文件中,Delphi存取文件的方式有4种,即传统的PASCAL方式、windows API文件句柄方式、VCL文件流方式、使用类方法方式。
使用类方法方式比较简单,其他三种方式一般的步骤为:(1) 声明文件类型变量;(2) 给文件类型变量指定文件名;(3) 通过文件类型变量打开并且读写文件,必要时进行文件定位;(4) 关闭文件。
1、PASCAL方式访问文件文件是由相同数据类型的数据元素组成的序列,文件可以分为三种类型:文本文件,类型文件,无类型文件。
文本文件中每个数据元素就是一个字符,占有一个字节,并以回车换行符(#13#10)表示每行的结束;类型文件中每个数据元素的数据类型可以是整数、实型记录型等;无类型文件中每个数据元素是一个字节的二进制数。
文件和数组在形式上有些类似,但实质上有诸多不同,主要表现为以下三个方面:(1)数组的元素个数一般是固定的,而文件的长度一般是不定的、随即的;(2)数组元素总是放于内存中,而文件往往存于外存中;(3)数组以“数组名[下标]”的形式访问数组中的任意一个元素,而文件则需要通过文件变量来访问。
1)类型文件例一、Button1按钮将记录数组XS[0..1]写入文件…Stu.dat‟,Button2将…Stu.dat‟读到记录变量X1,X2,然后用消息框输出。
TYPE Stu = RecordXh:integer;Xm:string[20];END;Procedure TForm1.Buttonclick(Sender:TObject);//记录数组写入文件Const xs:array[0..1] of Stu=((Xh:=405;xm:='张三'),(xh:=406,xm:='李四'));Var F:File of Stu;beginAssignFile(F,'Stu.dat');//关联文件ReWrite(F);//打开方式(写)Write(F,xs[0],xs[1]);//将数组写到文件CloseFile(F);end;procedure TForm1.Button2Click(Sender: TObject);VarF:File of Stu;x1,x2:Stu;beginAssignFile(F,'Stu.dat');ReSet(F); //打开方式(读)Read(F,x1,x2); //从文件中读到记录CloseFile(F);//关闭F指定文件showmessageFmt('%d,%s;%d,%s',[x1.xh,x1.xm,x2.xh,x2.xm]);end;2)文本文件例二、Button3将EDIT1指定库名写入文件'DBN.txt',Button4将DBN.txt读到变量DBN,然后用消息框输出。
procedure TForm1.Button3Click(Sender: TObject);VarF:TextFile;DBN:string;beginDBN:=edit1.text;AssignFile(F,ExtractFilePath(Application.ExeName)+'DBN.txt');Rewrite(F);Writeln(F,DBN);//写入一行字符创到变量DBNCloseFile(F);end;procedure TForm1.Button4Click(Sender: TObject);VarF:textfile;DBN:string;beginAssignFile(F,ExtractFilePath(Application.ExeName)+'DBN.txt');ReSet(F);Readln(F,DBN);//读取一行字符创到变量DBNCloseFile(F);Showmessage(DBN);end;注意:有类型文件操作的函数一般有:read函数,write函数,EOF函数:判断文件是否结束;而文本文件除了这些函数之外还有readln函数:读取一行字符串,writeln函数:写一行字符串,EOLN:判断是否为文件行尾,Append函数,以追加方式打开文件。
3)无类型文件通过文件数据块和写入数据块的过程原型说明如下:procedure BlockRead(Var F :File;const buf;Count:integer[;var Result:integer]);procedure BlockWrite(Var F :File;const buf;Count:integer[;var Result:integer]);//参数BUF为要读取或写入的数据缓冲区,COUNT为读或写的数据块的数目;//Result返回实际读或写如的数据;//数据块的大小默认为128个字节,调用RESET和REWRITE可以设置参数指定读入或写入的字节个数;读取位置定位的过程原型说明如下:procedure seek(var F:file;N:Longint)例三、Button5将缓冲区BUF中的数据写入无类型文件'abc.txt',Button5将'abc.txt'读到MEMO1,然后用消息框输出。
procedure TForm1.Button5Click(Sender: TObject);varF:file;//定义为无类型文件n:integer;BUF:array[0..127] of Char;beginAssignFile(F,'abc.txt');ReWrite(F,16);//写方式且块的大小为16个字节;FillChar(BUF,Sizeof(BUF),'A');//缓冲区BUF用A填充,共128个字节BlockWrite(F,Buf,9,n); //写入9块,末尾16个字符为乱码CloseFile(F); //写完文件后文件大小为9*16=144字节Showmessage('写入的块的个数为:'+inttostr(n)); //输出为9,但有效的为8块*16=128个字节end;procedure TForm1.Button6Click(Sender: TObject);VarF:file;n:integer;BUF:array[0..127] of Char;beginAssignFile(F,'abc.txt');Reset(F,16);BlockRead(F,buf,10,n);/读取10块,实际9块closefile(F);Showmessage(inttostr(n));Memo1.Lines.Add(buf); //有效字符8块,128个字符end;2、Windows API方式访问文件使用WINDOW 提供的API函数通过句柄也可以访问文件,他们在DELPHI中的SysUnit 单元中的定义如下:function FileCreate(const FileName:string;[;Rights:integer]):integer;//创建新文件并返回句柄;function FileOpen(const File Name:string;Mode:LongWord):integer;//打开文件并返回句柄;function FileRead(Handle:integer;VarBuf;Count:LongWord):integer;//从文件中读取数据;function FileWrite(Handle:integer;const buf;Count:Longword):integer;//将数据写入文件;function FileSeek(Handle:integer;const offsetLint64;origin:integer):int64;//读写位置的定位;procedur FileClose(Handle:integer);//关闭Handle指定文件句柄相应的文件;其中fileopen()函数MODE参数的大尅文件方式和共享文件方式常量如下:FmCreate //用指定的文件名创建,若文件已经存在则打开FmOpenRead //只读方式打开,以下都在SYSUNITS中定义FmOpenWrite //只写方式打开FmopenReadWrite //读写方式打开FmShareCompact //DOS兼容模式不可抑制FmshareExclusive //独占方式FmShareDenyWrite //拒绝其他进程写FmShareDenyRead //拒绝其他进程读,不支持所有平台FmShareDenyNone //允许其他进程读或写FileSeek()函数用于改变文件要读写的当前位置,OFFSET参数用于设置该变量,ORIGIN参数用于设置改变的相对位置,当ORIGIN为0时意味着OFFSET移动的字节数相对于文件头,为1时意味着相对于当前位置,为2时意味着OFFSET相对于文件尾,一般返回相对于文件头的心的当前位置,若返回-1表示发生异常。
例四、BUTTON7将MEMO1中文本写入文件'new.txt',button8将'new.txt'内容读到MEMO2中;procedure TForm1.Button7Click(Sender: TObject);varHnd,n:integer;s:string;Len,i:Longint;begins:=Memo1.Text;Len:=Length(s);n:=1;Hnd:=FileCreate('new.txt'); //创建文件'new.txt'并返回句柄for i:=1 to len do FileWrite(Hnd,s[i],n); //用FOR循环调用FileWrite()函数每次写入N个字符,或FileWrite(Hnd,s[1],len);该方法可一次写入全部字符FileClose(Hnd);end;procedure TForm1.Button8Click(Sender: TObject);varHnd,n:integer;i,len:LongWord;buf:array[0..127] of Char;beginHnd:=FileOpen('new.txt',fMopenRead ); //以只读方式打开文件,并返回该文件的句柄存于Hndlen:=FileSeek(Hnd,0,2);//获取文件的长度(相对于文件尾);i:=0;Memo2.Clear ;While i<len dobeginFileSeek(Hnd,i,0);//定位新读取的位置n:=FileRead(Hnd,Buf,127); //每次读取127个字符i:=i+n; //下次读取位置if n<127 then BUF[n]:=#0;//最后一次读不足127个字符时设置串结束标志Memo2.text:=memo2.Text+buf;//追加到MEMO2中end;end;3、VCL流方式访问文件在面向对象语言中文件的访问逐渐趋向使用数据流来实现,流不仅可以出来文件,还可以处理动态内存、网络数据等多种数据形式。