Delphi 文件操作集锦

合集下载

Delphi操作Excel大全

Delphi操作Excel大全

1.往Excel中插入图片用MsExcelWorkSheet.Pictures.Insert(ExtractFilePath(ParamStr(0))+'temp.jpg'); 可以放图片varExcelApp,MyWorkBook,MsExcelWorkSheet,Temple1:Variant;begintryExcelApp:=CreateOleObject('Excel.Application');MyWorkBook:=CreateOleobject('Excel.Sheet');MyWorkBook:=ExcelApp.WorkBooks.open(ExtractFilePath(ParamStr(0))+'testItemB ook.xls');MsExcelWorkSheet:=MyWorkBook.WorkSheets['3'];if not ADOQueryItemBook.IsEmpty thenbeginTblobfield(ADOQueryItemBook.FieldByName('pic')).SaveToFile(ExtractFilePath(ParamStr(0))+'temp.jpg');MsExcelWorkSheet.Pictures.Insert(ExtractFilePath(ParamStr(0))+'temp.jpg'); end;提供一些Excel的操作方法,希望有点用处吧。

一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );1) 显示当前窗口:ExcelApp.Visible := True;2) 更改 Excel 标题栏:ExcelApp.Caption := '应用程序调用 Microsoft Excel';3) 添加新工作簿:ExcelApp.WorkBooks.Add;4) 打开已存在的工作簿:ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );5) 设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;或ExcelApp.WorksSheets[ 'Sheet2' ].Activate;6) 给单元格赋值:ExcelApp.Cells[1,4].Value := '第一行第四列';7) 设置指定列的宽度(单位:字符个数),以第一列为例:ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米9) 在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows.PageBreak := 1;10) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;11) 指定边框线宽度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )12) 清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;13) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1] := '隶书';ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;14) 进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示';b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页';c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;15) 拷贝操作:a.拷贝整个工作表:ed.Range.Copy;b.拷贝指定区域:ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;c.从A1位置开始粘贴:ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.从文件尾部开始粘贴:ExcelApp.ActiveSheet.Range.PasteSpecial;16) 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;b. ExcelApp.ActiveSheet.Columns[1].Insert;17) 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;b. ExcelApp.ActiveSheet.Columns[1].Delete;18) 打印预览工作表:ExcelApp.ActiveSheet.PrintPreview;19) 打印输出工作表:ExcelApp.ActiveSheet.PrintOut;20) 工作表保存:if not ExcelApp.ActiveWorkBook.Saved thenExcelApp.ActiveSheet.PrintPreview;21) 工作表另存为:ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );22) 放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;23) 关闭工作簿:ExcelApp.WorkBooks.Close;24) 退出 Excel:ExcelApp.Quit;(二) 使用Delphi 控件方法在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。

Delphi文本文件读写完整操作

Delphi文本文件读写完整操作
end;
//不同数据类型的写入和读取
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文件的读取和写入概述: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⽂件名操作常⽤函数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操纵word(完整版)[精华]

delphi操纵word(完整版)[精华]

一、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 delphi 文件操作

文件输入和输出下表列出了输入和输出例程:Procedure orfunctionDescriptionAppend打开存在的文本文件(用于对文件追加文本)。

AssignFile指定外部文件的文件名到文件变量。

BlockRead从无类型文件读出一个或多个记录。

BlockWrite向无类型文件写入一个或多个记录。

ChDir改变当前目录。

CloseFile关闭打开的文件。

Eof返回文件的文件结束(end-of-file)状态。

Eoln返回文本文件的行结束(end-of-line)状态。

Erase删除外部文件。

FilePos返回类型文件或无类型文件的当前位置。

FileSize返回文件的当前尺寸;不适用于文本文件。

Flush刷新输出文本文件的缓冲区。

GetDir返回指定驱动器的当前目录。

IOResult返回表示最后一次I/O函数执行状态的整数值。

MkDir创建子目录。

Read从文件读出一个或多个值到一个或多个变量。

Readln在文本文件中执行Read操作并跳至下一行行首。

Rename对外部文件重命名。

Reset打开存在的文件。

Rewrite创建并打开新文件。

RmDir删除空的子目录。

Seek从类型文件或无类型文件的当前位置移动到指定的分量;不适用于文本文件。

SeekEof返回文本文件的文件结束(end-of-file)状态。

SeekEoln返回文本文件的行结束(end-of-line)状态。

SetTextBuf指定输入/输出(I/O)缓冲区到文本文件。

Truncate在类型文件或无类型文件的当前位置截断文件。

Write向文件写入一个或多个值。

Writeln在文本文件中执行Write操作然后写入一个行结束(end-of-line)标记。

文件变量就是其类型是文件类型的任何变量。

在Object Pascal中,文件类型有三种:类型文件(typed)、文本文件(text)和无类型文件(untyped)。

文件类型的声明见文件类型。

Delphi中文件的操作FileOpen

Delphi中文件的操作FileOpen

Delphi中⽂件的操作FileOpenvariFileHandle : Integer;iFileLength : Integer;iBytesRead, i : Integer;Buffer : ^char;strPath : String;begin// 取得⽂件路径strPath := ExtractFilePath(Application.ExeName) + 'EventStep1.dat';// 读取⽂件内容iFileHandle := FileOpen(strPath,fmOpenRead);//fmopenread指的是⽂件以只读⽅式打开,还有其他更多的⽅式,如fmCreate等if iFileHandle <> -1then// 判断⽂件返回值,看打开是否正确beginiFileLength := FileSeek(iFileHandle,0,2);//得到⽂件的长度FileSeek(iFileHandle,0,0); // 游标指向起始GetMem(Buffer,(iFileLength+1));//buffer分配内存iBytesRead := FileRead(iFileHandle, Buffer, iFileLength); //读数据,写时可⽤FileWriteend;FileClose(iFileHandle);// 关闭⽂件end;在VC编程中,⽂件操作有较多的⽅式,⽐如使⽤API,C++的⽂件流,C的File⽂件操作以及使⽤MFC提供的封装类CFile等等, 其实在delphi中的⽂件操作也有很多的⽅式,这⾥我只想谈谈FileOpen操作⽂件的⽅式,话不多说,⽰例是最有说服⼒的:以上可以简单的说明怎样读取,当然要真正完全掌握这个⽅法,那就要靠⾃⼰多多专研了!。

Delphi文件、文件夹常用操作

Delphi文件、文件夹常用操作
r := DiskSize(3); //获取C:总空间, 单位是字节
r := r/1024/1024/1024;
Str(r:0:2,s); //格式为保留两位小数的字符串
s := 'C盘总空间是: ' + s + ' GB';
ShowMessage(s); //xx.xx GB
dir := 'c:\temp\delphi';
RemoveDir(dir); //返回 Boolean
//也可以直接用API:
RemoveDirectory(PChar(dir)); //返回 Boolean
end;
--------------------------------------------------------------------------------
var
FileName,Dir,s: string;
begin
FileName := 'notepad.exe';
Dir := 'c:\windows';
s := FileSearch(FileName,Dir);
if s<>'' then
ShowMessage(s) //c:\windows\notepad.exe
r := DiskFree(3); //获取C:可用空间
r := r/1024/1024/1024;
Str(r:0:2,s);
s := 'C盘可用空间是: ' + s + ' GB';
ShowMessage(s); //xx.xx GB

Delphi文件操作

Delphi文件操作

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,然后用消息框输出。

在delphi中关于文件拷贝、删除、移动、改名等SHFileOperation的详细用法

在delphi中关于文件拷贝、删除、移动、改名等SHFileOperation的详细用法

关于的详细用法type_SHFILEOPSTRUCTA = packed recordWnd: HWND;wFunc: UINT;pFrom: PAnsiChar;pTo: PAnsiChar;fFlags: FILEOP_FLAGS;fAnyOperationsAborted: BOOL;hNameMappings: Pointer;lpszProgressTitle: PAnsiChar; { only used if FOF_SIMPLEPROGRESS }end;hwnd:用来显示操作状态的对话框句柄。

例中是form1的句柄wFunc:执行的操作。

可以是以下各值:(例中是FO_COPY)FO_COPY:拷贝pfrom域中指定的(目录,例中是'c:\a')到pto中指定的位置(例中为'c:\b')FO_DELET:删除pfrom中指定的文件. (pTo不用)FO_MOVE:移动PFrom中指定的文件到pto中指定的位置。

FO_RENAME:给PFrom中指定的。

pFrom:指定一个或多个源文件名的缓冲区地址。

多个名字必须用NULL分隔。

名字列表必须用两个NULL (nil,'\0')来结束。

pTo:目标文件或目录名缓冲区地址。

如果fFlags域指定FOF_MULTIDESTFILES,缓冲区可以包含多个目标文件名。

多个名字必须用NULL分隔。

名字列表必须用两个NULL(nil,'\0')fFlags :控制操作的标志,可以是以下各值组合:FOF_ALLOWUNDO:保留Undo信息,如果pFrom没有包含全的绝对的路径或文件名此值忽略。

FOF_CONFIRMMOUSE:没有实现.FOF_FILESONLY:只有文件名使用通配符时(*.*)才对文件操作。

FOF_MULTIDESTFILES: pTo域指一定了多个目标文件.(一个对就一个源文件) 而不是指定一个目录来存放所有源文件FOF_NOCONFIRMA TION:所有显示的对话框全部选择yes to allFOF_NOCONFIRMMKDIR: 如果需要创建一个新目录不确认。

delphi7操作

delphi7操作

1,保存所做的工作及时地保存所做的工作至关重要。

对设计者来讲,有两个文件需要保存:库单元文件(以.PAS为后缀)和工程文件(以.DPR为后缀)。

从主菜单上选择File|Save Project As...项,Delphi会显示标题为“Save Unit1 As(先保存单元)”的文件保存对话框,Delphi 2.0 允许用户更改存储路径,您可以在下拉式列表框中选择。

最好将您的文件保存在自己的目录中。

在编辑框中键入demoform.pas以保存库单元文件;然后显示标题为“Save Project As(保存工程)”的另一个文件保存对话框,键入sample.dpr。

Delphi保存这两个文件并返回窗体窗口。

不要把库单元和工程存成一样的文件名,Delphi要求两者不同。

第一次保存后,以后可以随时通过Speed Bar中的“Save All(ctrl+shift+s)”和“Save file”来保存工程文件和库单元文件。

一般来讲,当确认文件的改变后,要同时存储这两个文件。

2,第一个范例:Caption属性:&RoundRec,则(按R键即触发这个键)(1)点动写有“Additional”的页标签,切换到Additional页,找到“Shape (形状部件)”部件(其图标为圆、方形、三角形三个几何体)。

Name:Shape1 (2)点动“Dialog”页标签,选择以16色网格做图标的ColorDialog部件并把它放到窗体的任意位置。

因为这一部件是不可视部件,所以它的位置并不影响大局。

Name:ColorDialog1加个按钮:ColorDialog1.Execute;Shape1.Brush.Color := ColorDialog1.Color;(3)“Additional”部件页,选择一个“BitBtn”按钮(4)按钮:Shape1.Shape := stRectangle;3. 常用的文本相关部件它们是Label(标签)、Edit(文本编辑)、MaskEdit(格式编辑)、Memo(备注)、List Box(列表框)、Combo Box(组合框)。

Delphi常见文件操作

Delphi常见文件操作

3 )F表 示文件类 型变量 ,B f u 表示 内存 缓冲 区;C u t on 表
示 读 取 记 录数 目 ;A trnf rd表 示 实 际 读 取 或 者 保 存 的 记 m Tas r ee
T lSr m是操作 文件 的流类 ;T lb t r 是针对 数据库表 中 i fet a e boSeo a
SF AE EEOM N D EI OT R VLPET N S N W D A D G
● ● ● ● ● ● ● ● ● ● … … … ● ● ● … ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● … ● ●
D lh 常见文件 操作 e i p
张志 强
二进制 大对 象字段 的流类 ;T mo t a me  ̄Sr m是处 理 内存数据 的 e
流类 。利用 这些不 同的流对 象就 能完成针 对不 同数据 存储 的
读取操作 。
录数 目,当在 正常读取 或保存 时 ,该 参数返 回的值与 C u t on 相
等。 2 流 对 象 操 作 . 2
节数。
可 以处理 动态 内存 数据 、网络数 据 、数 据库二 进制 大对象 等 ቤተ መጻሕፍቲ ባይዱ
多种 形 式 的数 据 。
B f on: t e ; r mtrnf rdItgr ; u; u tne r[a Tas r : ee] C I g v A ee n )
在 Dl i e h 中,T t a p s em代表所有 流的基类 ,不过它是一 个 r 抽 象类 ,它 的各 子类 实现 了它 并形 成 了不 同功能 的 流对象 ,
T a i o a a e e ai n n De p i r g a r d t n lP p rOp r t i l h o r mmi g i o P n

Delphi文本文件操作

Delphi文本文件操作

Delphi文本文件操作
文件的打开与关闭:
AssignFile:把一个外部文件名和一个文件变量相关联
Reset:打开一个存在的文件
Rewrite:创建并打开一个新文件(或覆盖原有文件)
Append :以添加方式打开一个文件(只适用于文本文件)
CloseFile:关闭一个打开的文件
FileOpen:打开一个特定的文件并返回文件句柄
FileCreate:创建一个给定文件名的文件并返回文件句柄
FileClose:关闭一个特定句柄的文件
后边三个文件主要供系统内部使用,在文件复制的编程中也往往会用到。

它们操作的对象是文件句柄而不是文件变量。

文件定位:
Seek:把文件当前位置移到指定部分
FilePos:返回文件的当前位置
Eoln:返回行结束标志
EOF:返回文件结束标志
FileSeek:改变当前文件指针的位置。

DELPHI基础教程:文件管理(三)[1]

DELPHI基础教程:文件管理(三)[1]

DELPHI基础教程:文件管理(三)[1]画出每个自画项目这在TabSet的OnDrawTab事件处理过程中完成这一事件处理过程的参数中包含了待画项目索引画板待画区域是否被选中等这里我们只利用了前三个参数事实上利用最后一个参数我们可以对被选中的标签进行一些特殊的视觉效果处理这一工作就留给读者自己去完成procedure TFMForm DriveTabSetDrawTab(Sender: TObject; TabCanvas: TCanvas;R: TRect; Index: Integer; Selected: Boolean)varBitmap: TBitmap;beginBitmap := TBitmap(DriveTabSet Tabs Objects[Index])with TabCanvas dobeginDraw(R Left R Top + Bitmap)TextOut(R Left + + Bitmap Width R Top + DriveT abSet Tabs[Index])end;end;文件管理基本功能的实现在子窗口的File菜单中定义了文件管理的基本功能它们是● Open :打开或运行一个文件(从文件列表框双击该文件可实现同样效果)● Move :文件在不同目录间的移动● Copy :文件拷贝● Delete :文件删除● Rename :文件更名● Properties :显示文件属性文件打开文件打开功能可以运行一个可执行文件或把文件在与之相关联的应用程序中打开文件总是与创建它的应用程序相关联这种关联可以在Windows的文件管理器中修改要注意的是文件的关联是以后缀名为标志的因而对一个文件关联方式的修改将影响所有相同后缀名的文件文件打开功能实现的关键是利用了Windows API函数ShellExecute 由于Windows API函数的参数要求字符串类型是PChar 而Delphi中一般用的是有结束标志的String类型因此为调用方便我们把这一函数进行了重新定义如下function ExecuteFile(const FileName Params DefaultDir: String;ShowCmd: Integer) THandle;varzFileName zParams zDir: array[ ] of Char;beginResult := ShellExecute(Application MainForm Handle nilStrPCopy(zFileName FileName)StrPCopy(zParams Params)StrPCopy(zDir DefaultDir) ShowCmd)end;以上函数在fmxutils单元中定义 fmxutils是一个自定义代码单元有关ShellExecute中各参数的具体含义读者可查阅联机Help文件StrPCopy把一个Pascal类型的字符串拷贝到一个无结束符的PChar类型字符串中在子窗口的Open Click事件处理过程中procedure TFMForm Open Click(Sender: TObject)beginwith FileList doExecuteFile(FileName Directory SW_SHOW) ;end;如果FileList允许显示目录的话(即FileType属性再增加一项ftDirectory)那么对于一个目录而言打开的含义应该是显示它下边的子目录和文件程序修改如下procefure TFMForm Open Click(Sender: Tobject)beginWith FileList dobeginif HasAttr(FileName faDirectory) thenDirectoryOutline Directory := FileNameelseExecuteFile(FileName Directory SW_SHOW)end;end;其中HasAttr是一个fmxutils单元中的自定义函数用于检测指定文件是否具有某种属性function HasAttr(const FileName: String; Attr: Word)Boolean;beginResult := (FileGetAttr(FileName) and Attr) = Attr;end;文件拷贝移动删除更名文件拷贝的关键是使用了以文件句柄为操作对象的文件管理函数因而提供了一种底层的I/O通道在Object Pascal中这一点是利用无类型文件实现的在文件拷贝中首先检查目标文件名是否是一个目录如是则把原文件的文件名添加到目标路径后生成目标文件全路径名而后提取源文件的时间戳以备拷贝完成后设置目标文件拷贝过程中使用了返回文件句柄或以文件句柄为参数的文件管理函数FileOpen FileCreate FileRead FileWrite FileClose 为保证文件的正常关闭和内存的释放在拷贝过程中进行异常保护过程CopyFile实现上述功能它定义在fmxutils单元中procedure CopyFile(const FileName DestName: TFileName)varCopyBuffer: Pointer;TimeStamp BytesCopied: Longint;Source Dest: Integer;Destination: TFileName;constChunkSize: Longint = ;beginDestination := ExpandFileName(DestName)if HasAttr(Destination faDirectory) thenDestination := Destination + \ + ExtractFileName(FileName)TimeStamp := FileAge(FileName)GetMem(CopyBuffer ChunkSize)trySource := FileOpen(FileName fmShareDenyWrite)if Source < thenraise EFOpenError Create(FmtLoadStr(SFOpenError [FileName]))tryDest := FileCreate(Destination)if Dest < thenraise EFCreateError Create(FmtLoadStr(SFCreateError [Destination]))tryrepeatBytesCopied := FileRead(Source CopyBuffer^ ChunkSize)if BytesCopied > thenFileWrite(Dest CopyBuffer^ BytesCopied)until BytesCopied < ChunkSize;finallyFileSetDate(Dest TimeStamp)FileClose(Dest)end;finallyFileClose(Source)end;finallyFreeMem(CopyBuffer ChunkSize)end;end;如果我们不使用FileSetDate过程 Windows自动把当前时间作为时间戳写入文件文件移动事实上是文件拷贝与文件删除的结合fmxutils单元中的MoveFile过程实现了这一功能procedure MoveFile(const FileName DestName: TFileName)varDestination: TFileName;beginDestination := ExpandFileName(DestName)if not RenameFile(FileName Destination) thenbeginif HasAttr(FileName faReadOnly) thenraise EFCantMove Create(Format(SFCantMove [FileName]))CopyFile(FileName Destination)DeleteFile(FileName)end;end;EFCanMove是一个自定义异常类typeEFCanMove := Class(EStreamError)有关自定义异常类请参阅第十二章文件删除文件更名直接调用Delphi文件管理过程DeleteFile RenameFile 它们都以文件名为参数操作执行前应弹出一个对话框进行确认执行完毕后应调用Update方法更新FileList的显示lishixinzhi/Article/program/Delphi/201311/25232。

delphi操作excel汇总

delphi操作excel汇总

if MessageDlg(xlsFileName+'文件已被修改,是否保存?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
WorkBook.save
else
workBook.Saved := True; //放弃修改
WorkBook.close;
eclApp.Quit;
//释放VARIANT变量
eclApp:=Unassigned;
end;
end;
end.
经过上述操作过程后,我们就可以很放心地将数据库中的数据转换成Excel文件了。
对上面的Range合并单元格:
Range.merge;
Range. FormulaR1C1:='合并区';//合并后写入文本
注意以后要读合并的单元格里面的文本就是读合并区域的左上角的那个单元格的文本
在excel表中选定区域赋给range:
range:=excel_grid1.OleObject.application.selection;
Olecon.oleobject.application.columns[2].insert;
复制指定区域:
Olecon.oleobject.application.range['A1:C3'].copy;
从指定单元格开始粘贴:
Olecon.oleobject.application.range['A4'].PasteSpecial;
Exit;
end;
try
ShowMessage('下面演示:新建一个XLS文件,并写入数据,最后关闭它。');

Delphi中关于文件目录的操作

Delphi中关于文件目录的操作

Delphi中关于文件、目录操作的函数来源:大富翁关于文件、目录操作Chdir('c:\abcdir'); // 转到目录Mkdir('dirname'); //建立目录Rmdir('dirname'); //删除目录GetCurrentDir; //取当前目录名,无'\'Getdir(0,s); //取工作目录名s:='c:\abcdir';Deletfile('abc.txt'); //删除文件Renamefile('old.txt','new.txt'); //文件更名ExtractFilename(filelistbox1.filename); //取文件名ExtractFileExt(filelistbox1.filename); //取文件后缀目录处理函数三则:DelTree,XCopy,Moveprivate{ Private declarations }procedure _XCopy(ASourceDir:String; ADestDir:String);procedure _Move(ASourceDir:String; ADestDir:String);procedure _DelTree(ASourceDir:String);//---------------------------------------------------------- procedure TForm1._XCopy(ASourceDir:String; ADestDir:String);varFileRec:TSearchrec;Sour:String;Dest:String;beginSour:=ASourceDir;Dest:=ADestDir;if Sour[Length(Sour)]<>'\' then Sour := Sour + '\';if Dest[Length(Dest)]<>'\' then Dest := Dest + '\';if not DirectoryExists(ASourceDir) thenbeginShowMessage('来源目录不存在!!');exit;end;if not DirectoryExists(ADestDir) thenForceDirectories(ADestDir);end;if FindFirst(Sour+'*.*',faAnyfile,FileRec) = 0 thenrepeatif ((FileRec.Attr and faDirectory) <> 0) thenbeginif (<>'.') and (<>'..') thenbegin_XCopy(Sour+,Dest+);end;endelsebeginCopyFile(PChar(Sour+),PChar(Dest+),false); end;until FindNext(FileRec)<>0;FindClose(FileRec);end;//------------------------------------------------------------------ procedure TForm1._Move(ASourceDir:String; ADestDir:String);varFileRec:TSearchrec;Sour:String;Dest:String;beginSour:=ASourceDir;Dest:=ADestDir;if Sour[Length(Sour)]<>'\' then Sour := Sour + '\';if Dest[Length(Dest)]<>'\' then Dest := Dest + '\';if not DirectoryExists(ASourceDir) thenbeginShowMessage('来源目录不存在!!');exit;end;if not DirectoryExists(ADestDir) thenbeginForceDirectories(ADestDir);if FindFirst(Sour+'*.*',faAnyfile,FileRec) = 0 thenrepeatif ((FileRec.Attr and faDirectory) <> 0) thenbeginif (<>'.') and (<>'..') thenbegin_XCopy(Sour+,Dest+);_DelTree(Sour+);FileSetAttr(Sour+,faArchive);RemoveDir(Sour+);end;endelsebeginCopyFile(PChar(Sour+),PChar(Dest+),false);FileSetAttr(Sour+,faArchive);deletefile(Sour+);end;until FindNext(FileRec)<>0;FindClose(FileRec);FileSetAttr(Sour,faArchive);RemoveDir(Sour);end;//-----------------------------------------------------------procedure TForm1._DelTree(ASourceDir:String);varFileRec:TSearchrec;Sour:String;beginSour:=ASourceDir;if Sour[Length(Sour)]<>'\' then Sour := Sour + '\';if not DirectoryExists(ASourceDir) thenbeginShowMessage('来源目录不存在!!');exit;if FindFirst(Sour+'*.*',faAnyfile,FileRec) = 0 thenrepeat//if (FileRec.Attr = faDirectory) thenif ((FileRec.Attr and faDirectory) <> 0) thenbeginif (<>'.') and (<>'..') then begin_DelTree(Sour+);FileSetAttr(Sour+,faArchive);RemoveDir(Sour+);end;endelsebeginFileSetAttr(Sour+,faArchive);deletefile(Sour+);end;until FindNext(FileRec)<>0;FindClose(FileRec);FileSetAttr(Sour,faArchive);RemoveDir(Sour);end;利用递归实现删除某一目录下所有文件var Form1: TForm1;rec_stack:array [1..30] of TSearchRec;rec_pointer:integer;Del_Flag:Boolean;--------------------------------------------------------------- procedure TForm1.DeleteTree(s:string);VAR searchRec:TSearchRec;beginif FindFirst(s+'\*.*', faAnyFile, SearchRec)=0 thenrepeatif (<>'.') and (<>'..') thenbeginif (SearchRec.Attr and faDirectory>0) thenbeginrec_stack[rec_pointer]:=SearchRec;rec_pointer:=rec_pointer-1;DeleteTree(s+'\'+);rec_pointer:=rec_pointer+1;SearchRec:=rec_stack[rec_pointer];endelsebegintryFileSetAttr(s+'\'+,faArchive);DeleteFile(s+'\'+);exceptApplication.MessageBox(PChar('Delete file:'+s+'\'++'Error!'),'Info',MB_OK);Del_Flag:=False;end;end;end;until (FindNext(SearchRec)<>0);FindClose(SearchRec);if rec_pointer<30 thenbegintryFileSetAttr(s,faArchive);RemoveDir(s);exceptApplication.MessageBox(PChar('Delete Directory:'+s+' Error!'),'Info',MB_OK); Del_Flag:=False;end;end;end;---------------------------------------------------------Del_Flag:=True;rec_pointer:=30;DeleteTree('c:\temp');if Del_Flag then Application.MessageBox(PChar('目录c:\temp的内容已成功清除!'),'信息',MB_OK);轻轻松松查找文件在平常的编程当中,经常会碰到查找某一个目录下某一类文件或者所有文件的问题,为了适应不同的需要,我们经常不得不编写大量的类似的代码,有没有可能写一个通用的查找文件的程序,找到一个文件后就进行处理的呢?这样我们只要编写处理文件的部分就可以了,不需要编写查找文件的部分!答案是肯定的。

Delphi 文件操作

Delphi 文件操作

Delphi 文件操作var file_name:string;file_name:='c:\luther.gliethttp.txt';FileWrite(com.log_fd, PChar(file_name)^, length(file_name));文件是同一种类型元素的有序集合,是内存与外设之间传输数据的渠道。

文件的本质是一个数据流,所有的文件实际上是一串二进制序列。

文件管理包括:1、文件操作。

2、目录操作。

3、驱动器操作。

三部分。

1、常见文件操作函数和过程。

1.1、AssignFile过程作用:将一个外部文件的文件名与一个File类型的变量关联,并对变量进行初始化。

原型:procedure AssignFile(var F; FileName: String);F:一个File类型的变量,可以是任何数据类型。

FileName:外部文件的文件名。

1.2、FileExists函数作用:用于测试指定文件名的文件是否存在。

原型:function FileExists(const FileName: String): Boolean;FileName:文件名。

字符串类型。

注意:如果文件存在,返回True;否则,返回False。

1.3、Append过程作用:为在一个已经存在的文件末尾添加文本做好准备工作。

文件是只写方式打开的。

原型:procedure Append(var F: Text);F: 一个TextFile类型变量。

注意:这是一个对文本类型文件操作的过程。

其中变量F必须和外部文件关联。

如果F 没有与外部文件关联,将抛出异常。

如果F已经处于打开状态,则过程会关闭F并重新打开。

文件指针位置将被设置在文件末尾。

1.4、Reset过程作用:对于文本文件,Reset过程将以只读方式打开文件。

对于类型文件和无类型文件,Reset过程将以可读写方式打开文件。

原型:procedure Reset(var F [: File; RecSize: Word ] );F:File类型变量,可以是任何文件类型。

delphi文件操作

delphi文件操作

d e l p h i文件操作(总4页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除先举例子说明procedure (Sender: TObject);? Seek仅用于记录文件;2. FileSeek的参数是文件句柄、偏移量、起始位置。

其中起始位置有文件首、当前位置、文件尾三种选择。

Seek的参数是文件变量、偏移量,偏移量是从文件首开始定位的。

3. FileSeek的偏移量以字节数来计算,而?Seek是根据记录号进行移动。

?Seek、FilePos仅用于记录文件。

但任何文件都可以看作是基于字节的记录文件。

下面一段程序表示了它们的用法。

?{ 该例子的设计界面为一个包含TOpenDialog部件的窗体。

}?uses Dialogs;?var?f: file of Byte;?size: Longint;?S: String;?y: Integer;?begin?if then?begin?AssignFile(f, ;?Reset(f);?size := FileSize(f);?S := 'File size in bytes: ' + IntToStr(size);?y := 10;?(5, y, S);?y := y + (S) + 5;?S := 'Seeking halfway into file...';?(5, y, S);?y := y + (S) + 5;?Seek(f,size div 2);?S := 'Position is now ' + IntToStr(FilePos(f));?(5, y, S);?CloseFile(f);?end;?end.?文件删除与截断?Erase :删除一个存在的文件?DeleteFile :删除一个文件?Truncate :从文件当前位置将文件截断?Erase与DeleteFile的区别是:Erase以文件变量为参数,当文件不能删除时引起一个异常;DeleteFile以文件名为参数,当文件不存在或不能删除时返回False,而并不引起一个异常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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发表评语&amp;raquo;&amp;raquo;&amp;raquo;2006-2-16 19:23:45 在Delphi中获取和修改文件的时间关键词:文件修改时间本文介绍了在Delphi中利用系统函数和Windows API函数调用来获取和修改文件的时间信息的方法。

熟悉Windows 95/98的朋友一定经常会用单击鼠标右键的方法来查看所选定的文件的属性信息。

在属性菜单中会列出该文件的创建时间、修改时间和访问时间。

这些信息常常是很有用的,它们的设置一般都是由操作系统(也就是由Dos/Windows等等)自动完成的,不会让用户轻易修改。

这里,我向大家介绍在Delphi中如何实现文件时间的获取和修改方法。

Delphi 中提供了很完备的Windows API函数的调用接口,可以方便的进行高级Windows编程。

利用Delphi中的FindFirst函数可以得到一个文件的属性记录,该记录中的FindData域中就记载了详细的文件时间信息。

然而遗憾的是,FindData中的时间信息是不能直接得到的。

因此,有人(编者按:很遗憾不知此人姓名)编写了一个转换函数来完成文件时间格式的转换。

下面给出了具体的实现方法,仅供参考:function CovFileDate(Fd:_FileTime):TDateTime;varTct:_SystemTime;Temp:_FileTime;beginFileTimeToLocalFileTime(Fd,Temp); FileTimeToSystemTime(Temp,Tct);CovFileDate:=SystemTimeToDateTime(Tct);end;有了上面的函数支持,我们就可以获取一个文件的时间信息了。

以下是一个简单的例子:procdeure GetFileTime(const Tf:string);{ 获取文件时间,Tf表示目标文件路径和名称}constModel=yyyy/mm/dd,hh:mm:ss; { 设定时间格式}varTp:TSearchRec; { 申明Tp为一个查找记录}T1,T2,T3:string;beginFindFirst(Tf,faAnyFile,Tp); { 查找目标文件}T1:=FormatDateTime(Model,CovFileDate(Tp.FindData.ftCreationTime)));T2:=FormatDateTime(Model,CovFileDate(Tp.FindData.ftLastWriteTime)));{ 返回文件的修改时间}T3:=FormatDateTime(Model,Now));{ 返回文件的当前访问时间}FindClose(Tp);end;设置文件的时间要复杂一些,这里介绍利用Delphi中的DataTimePicker组件来辅助完成这一复杂的操作。

下面的例子利用了四个DataTimePicker组件来完成文件创建时间和修改时间的设置。

注意:文件的访问时间用修改时间来代替。

使用下面的例子时,请在您的Form上添加四个DataTimePicker组件。

其中第一和第三个DataTimePicker 组件中的Kind设置为dtkDate,第二个和第四个DataTimePicker组件中的Kind设置为dtkTime. procedure SetFileDateTime(const Tf:string);{ 设置文件时间,Tf表示目标文件路径和名称}varDt1,Dt2:Integer;Fs:TFileStream;Fct,Flt:TFileTime;Dt1:=DateTimeToFileDate(Trunc(Form1.DateTimePicker1.Date) +Frac(Form1.DateTimePicker2.Time));Dt2:=DateTimeToFileDate(Trunc(Form1.DateTimePicker3.Date) +Frac(Form1.DateTimePicker4.Time));{ 转换用户输入在DataTimePicker中的信息}tryFS := TFileStream.Create(Tf, fmOpenReadWrite); tryif DosDateTimeToFileTime(LongRec(DT1).Hi, LongRec(DT1).Lo, Fct) and LocalFileTimeToFileTime(Fct, Fct) and DosDateTimeToFileTime(LongRec(DT2).Hi, LongRec(DT2).Lo, Flt) and LocalFileTimeToFileTime(Flt, Flt)then SetFileTime(FS.Handle,@Fct, @Flt, @Flt);{ 设置文件时间属性}finallyFS.Free;exceptMessageDlg(日期修改操作失败!,mtError, [mbOk], 0);{ 因为目标文件正在被使用等原因而导致失败}end;end;以上简单介绍了文件时间属性的修改方法,请注意:修改文件时间的范围是从公元1792年9月19日开始的,上限可以达到公元2999年或更高。

另外,请不要将此技术用于破坏他人文件等非正当途径。

2006-2-16 19:24:09 从快捷方式取得该快捷方式的指向文档关键词:快捷方式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; 2006-2-16 19:24:44 修改文件的扩展名关键词:扩展名ChangeFileExtvarfilename:String;beginfilename := ‘abcd.html‘;filename := ChangeFileExt(filename, ‘‘);Edit1.Text:=filename;end; 2006-2-16 19:25:32 如何读写文本文件关键词:读写文本文件下面源代码或许对你有些帮助: Procedure NewTxt;VarF : Textfile;BeginAssignFile(F, ‘c:\ek.txt‘); {将文件名与变量F 关联} ReWrite(F); {创建一个新的文件并命名为ek.txt} Writeln(F, ‘将您要写入的文本写入到一个 .txt 文件‘); Closefile(F); {关闭文件F}End; Procedure OpenTxt;VarF : Textfile;BeginAssignFile(F, ‘c:\ek.txt‘); {将文件名与变量F 关联} Append(F); {以编辑方式打开文件F }Writeln(F, ‘将您要写入的文本写入到一个 .txt 文件‘); Closefile(F); {关闭文件F}End; Procedure ReadTxt;VarF : Textfile;str : String;BeginAssignFile(F, ‘c:\ek.txt‘); {将文件名与变量F 关联} Reset(F); {打开并读取文件F }Readln(F, str);ShowMessage(‘文件有:‘ +str + ‘行。

相关文档
最新文档