Delphi文件操作集锦_第1页
Delphi文件操作集锦_第2页
Delphi文件操作集锦_第3页
Delphi文件操作集锦_第4页
Delphi文件操作集锦_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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 d

2、eclarations public Public declarations end; varForm1: TForm1; implementation uses activex,comobj,shlobj;$R *.dfm function ResolveLink(const ALinkfile: String): String;var link: IShellLink; storage: IPersistFile; filedata: TWin32FindData;buf: Array0.MAX_PATH of Char;widepath: WideString;begin OleChec

3、k(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(widepath1, STGM_READ) ThenIf Succeeded(link.Resolve(GetActiveWindow, SLR_NOUPDATE) Th

4、enIf 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

5、 19:23:45 在 Delphi 中获取和修改文件的时间关 键词 :文件修改时间本文介绍了在 Delphi 中利用系统函数和 Windows API 函数 调用来获取和修改文件的时间信息的方法。 熟悉 Windows 95/98 的朋友一定经常会用单击鼠标右键的方法来查看所选 定的文件的属性信息。在属性菜单中会列出该文件的创建时 间、修改时间和访问时间。这些信息常常是很有用的,它们 的设置一般都是由操作系统 (也就是由 Dos/Windows 等等) 自动完成的,不会让用户轻易修改。 这里,我向大家介绍 在 Delphi 中如何实现文件时间的获取和修改方法。Delphi中提供了很完备的 W

6、indows API 函数的调用接口, 可以方便 的进行高级 Windows 编程。利用 Delphi 中的 FindFirst 函数 可以得到一个文件的属性记录,该记录中的 FindData 域中 就记载了详细的文件时间信息。 然而遗憾的是, FindData 中 的时间信息是不能直接得到的。因此,有人(编者按:很遗 憾不知此人姓名)编写了一个转换函数来完成文件时间格式 的转换。下面给出了具体的实现方法,仅供参考: function CovFileDate(Fd:_FileTime):TDateTime; 转换文件的时间格式 varTct:_SystemTime;Temp:_FileTime

7、;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:str

8、ing;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 中的 DataTimePic

9、ker 组件来辅助完成这一复杂的操作。 下面的例 子利用了四个 DataTimePicker 组件来完成文件创建时间和 修改时间的设置。 注意:文件的访问时间用修改时间来代替。 使用下面的例子时,请在您的 Form 上添加四个 DataTimePicker 组件。其中第一和第三个 DataTimePicker 组件中的 Kind 设置为 dtkDate ,第二个和第四个 DataTimePicker 组件中的 Kind 设置为 dtkTcedure SetFileDateTime(const Tf:string); 设置文件时间, Tf 表示目标文件路径和名称 varDt1,Dt

10、2:Integer; Fs:TFileStream;Fct,Flt:TFileTime;beginDt1:=DateTimeToFileDate(Trunc(Form1.DateTimePicker1.Date) +Frac(Form1.DateTimePicker2.Time);Dt2:=DateTimeToFileDate(Trunc(Form1.DateTimePicker3.Date) +Frac(Form1.DateTimePicker4.Time); 转换用户输入在 DataTimePicker 中的信息 tryFS := TFileStream.Create(Tf, fmOpen

11、ReadWrite); tryif DosDateTimeToFileTime(LongRec(DT1).Hi,LongRec(DT1).Lo, Fct) andLocalFileTimeToFileTime(Fct, Fct) andDosDateTimeToFileTime(LongRec(DT2).Hi,LongRec(DT2).Lo, Flt) andLocalFileTimeToFileTime(Flt, Flt)then SetFileTime(FS.Handle,Fct, Flt, Flt); 设置文件时间属性 finallyFS.Free;end;exceptMessageDl

12、g( 日期修改操作失败! ,mtError, mbOk, 0); 因为目标文件正在被使用等原因而导致失败 end;end; 以上简单介绍了文件时间属性的修改方法,请注意:修改文 件时间的范围是从公元 1792 年 9 月 19 日开始的,上限可以 达到公元 2999 年或更高。另外,请不要将此技术用于破坏 他人文件等非正当途径。 2006-2-16 19:24:09 从快捷方式 取得该快捷方式的指向文档关键词 : 快捷方式 unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes,Graphics, Con

13、trols, Forms,Dialogs, StdCtrls; typeTForm1 = class(TForm)Button1: TButton;procedure Button1Click(Sender: TObject);private Private declarations public Public declarations end; varForm1: TForm1; implementation uses activex,comobj,shlobj;$R *.dfm function ResolveLink(const ALinkfile: String): String;va

14、rlink: IShellLink;storage: IPersistFile;filedata: TWin32FindData;buf: Array0.MAX_PATH of Char;widepath: WideString;begin OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, link);OleCheck(link.QueryInterface(IPersistFile, storage); widepath := ALinkFile;Result := unable

15、 to resolve link;If Succeeded(storage.Load(widepath1, 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: T

16、Object); beginShowMessage(ResolveLink( C:delphi 7.lnk ); end; 2006-2-16 19:24:44 修改文件的扩展名关键词 ChangeFileExtvar filename:String;beginfilename := abcd.html ;filename := ChangeFileExt(filename, ); Edit1.Text:=filename;end; 2006-2-16 19:25:32 如何读写文本文件关键词 本文件下面源代码或许对你有些帮助 : Procedure NewTxt; Var:扩展名:读写文F

17、: Textfile;BeginAssignFile(F, ekctxt ); 将文件名与变量关联ReWrite(F); 创建一个新的文件并命名为 ek.txtWriteln(F,将您要写入的文本写入到一个.txt文件);Closefile(F); 关闭文件 FEnd; Procedure OpenTxt;VarF : Textfile;BeginAssignFile(F, ekctxt ); 将文件名与变量关联Append(F); 以编辑方式打开文件 F Writeln(F,将您要写入的文本写入到一个.txt文件);Closefile(F); 关闭文件 FEnd; Procedure Rea

18、dTxt;VarF : Textfile;str : String;BeginAssignFile(F, ekctxt ); 将文件名与变量关联Reset(F); 打开并读取文件 F Readln(F, str);ShowMessage( 文件有: +str + 行。);Closefile(F); 关闭文件 FEnd; procedure TForm1.Button1Click(Sender: TObject); beginNewTxt;end; procedure TForm1.Button2Click(Sender: TObject); beginOpenTxt;end; procedur

19、e TForm1.Button3Click(Sender: TObject); beginReadTxt;end; 2006-2-16 19:25:57 删除某目录下所有指定扩展名文 件关键词 :删除文件 扩展名 /删除某目录下所有指定扩展名文件function DelFile(sDir,fExt: string): Boolean; varhFindfile: HWND;FindFileData: WIN32_FIND_DATA;sr: TSearchRec; begin sDir:= sDir + ; hFindfile:= FindFirstFile(pchar(sDir + fExt)

20、, FindFileData); if hFindFile <> NULL thenbegindeletefile(sDir + FindFileData.cFileName); while FindNextFile(hFindFile, FindFileData) <>FALSE do deletefile(sDir + FindFileData.cFileName); end;sr.FindHandle:= hFindFile;FindClose(sr);end; function getAppPath : string;varstrTmp : string;beg

21、in strTmp := ExtractFilePath(ExtractFilePath(application.Exename);if strTmplength(strTmp) <> thenstrTmp := strTmp + ;result := strTmp;end; 2006-2-16 19:26:41 把音频插进 EXE 文件并且播放关 键词 :资源文件步骤 1 )建立一个 SOUNDS.RC 文件 使用 NotePad 记事本 -象下面: #define WAVE WAVEFILE SOUND1 WAVE anysound.wavSOUND2 WAVE anthers

22、ound.wavSOUND3 WAVE hello.wav步骤 2 )把它编译到一个 RES文件 使用和 Delphi 一起的 BRCC32.EXE 程序。使用下面 的命令行: BRCC32.EXE -foSOUND32.RES SOUNDS.RC 你应该以 sound32.res 结束一个文件。步骤 3)把它加入你 的程序 在 DPR 文件把它加入 $R*.RES 下面,如下: $R SOUND32.RES 步骤 4)把下面的代码加入程序去播放内 含的音频 USES MMSYSTEMProcedurePlayResSound(RESName:String;uFlags:Integer);va

23、rhResInfo,hRes:Thandle; lpGlob:Pchar;Begin hResInfo:=FindResource(HInstance,PChar(RESName),M AKEINTRESOURCE( WAVEFILE );if hResInfo = 0 thenbeginmessagebox(0, 未找到资源。 ,PChar(RESName),16); exit;end; hRes:=LoadResource(HInstance,hResinfo);if hRes = 0 thenbeginmessagebox(0, 不能装载资源。 ,PChar(RESName),16); exit;end;lpGlob:=LockResource(hRes);if lpGlob=Nil thenbeginmessagebox(0, 资源损坏。 ,PChar(RESName),16); exit;end;uFlags:=snd_Memory or uFlags;SndPlaySound(lpGlob,uFlags);UnlockResource(hR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论