对于delphi–如何对单个基本文件“diff”多个文件?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍delphi文件夹下所有文件,并为您提供关于DelphiSHMultiFilePrope
对于delphi – 如何对单个基本文件“diff”多个文件?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍delphi 文件夹下所有文件,并为您提供关于Delphi SHMultiFileProperties查看多个文件属性、delphi – 如何在不覆盖现有文件的情况下创建线程文件?、delphi – 如何处理临时文件?、delphi – 如何将多个文件扩展名传递给TDirectory.GetFiles?的有用信息。
本文目录一览:- delphi – 如何对单个基本文件“diff”多个文件?(delphi 文件夹下所有文件)
- Delphi SHMultiFileProperties查看多个文件属性
- delphi – 如何在不覆盖现有文件的情况下创建线程文件?
- delphi – 如何处理临时文件?
- delphi – 如何将多个文件扩展名传递给TDirectory.GetFiles?
delphi – 如何对单个基本文件“diff”多个文件?(delphi 文件夹下所有文件)
我一直在看diff和sdiff,但他们并没有完全提供我正在寻找的东西。
我已经考虑将每个文件的基础单独区分开来,但是我的问题就是将它们合并成一个报告。理想情况下,如果在所有10个配置文件中丢失了相同的行(与基本配置相比较),我希望以简单的可视化方式报告。例如,这里基本上是我想要做的(这个例子有1个基本文件和3个配置文件,每个都与基本配置进行比较):
Here’s a link to the picture below
alt text http://img141.imageshack.us/img141/3264/config2.png
请注意,几个配置文件中缺少某些行(与基本单独比较)。我希望能够把它们放在同一行上(如上所述)。
注意,上面的截图只是一个模型,而不是一个实际的应用程序。
我已经看过使用一些Delphi控件来编写我自己的(我有Delphi 2007),但是如果有一个已经这样做的程序,我更喜欢它。
我看过的Delphi控件是TDiff和TrmDiff* components included in rmcontrols。
解决方法
Delphi SHMultiFileProperties查看多个文件属性
总结
以上是小编为你收集整理的Delphi SHMultiFileProperties查看多个文件属性全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
delphi – 如何在不覆盖现有文件的情况下创建线程文件?
if not FileExists(filename) then stream := TFileStream.Create(filename,fmCreate);
但这不是线程安全的.所以现在我正在寻找一个线程安全版本.
也许我可以结合一些模式使TFileStream.Create(filename,fmCreate fm ???);如果文件存在则失败?
我需要这个与旧DOS程序通信目录锁.但是DOS程序没有打开文件.
总结
以上是小编为你收集整理的delphi – 如何在不覆盖现有文件的情况下创建线程文件?全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
delphi – 如何处理临时文件?
到目前为止,我能够:
– 获得一个独特的名字
– 将blob文件保存到生成的文件中
– 打开它
问题是我不知道如何删除(或更新)文件,之后用户将关闭该文件.
如果有人可以帮助我,我会很高兴:)
这是我的代码的快照:
procedure OpenTemporaryFile(AFileExtension: String; AKey: Integer; AMyConnection: TMyConnection); Var qrDocuments : TMyQuery ; TmpName,ExtName: string; TempFileName: TFileStream; begin //Generate an unique tmp file located into user temp folder TmpName:= FileGetTempName('~SI'); ExtName:= ChangeFileExt(TmpName,AFileExtension); //Change files extension so that Shellexecute will be able to open the file RenameFile(TmpName,ExtName ); //Creating the FileStream (data is fetched from an blob field) TempFileName := TFileStream.Create(ExtName,fmOpenReadWrite ); qrDocuments := TMyQuery.create(nil); try qrDocuments.Connection := AMyConnection; qrDocuments.Close; qrDocuments.sql.Clear; qrDocuments.sql.Text:='Select Id,FileName,Data from files where Id = :prId And Data IS NOT NULL'; qrDocuments.ParamByName('prId').AsInteger := AKey; qrDocuments.open; TBlobField(qrDocuments.FieldByName('Data')).SavetoStream(TempFileName); finally TempFileName.Free; qrDocuments.free; end; ShellExecute(Application.Handle,'open',Pchar(ExtName),'',SW_SHOWnorMAL); DeleteFile( ExtName); end;
解决方法
无论如何,您可以在这里结合一些提示以获得最佳结果:
>拥有应用程序使用的临时文件的内部列表.
>在程序关闭时,请遍历临时文件列表并尝试删除它们.如果其中一些失败(因为它们仍然在外部应用程序中打开),请在the code gabr gave you重新启动时注册这些删除.
>无论何时需要新的临时文件,首先要遍历内部文件列表并尝试重用其中一个文件.仅在此失败时才创建新文件(并将其名称添加到列表中).
我更喜欢这种方法在重启时注册所有文件以进行删除,因为我不确定应用程序可能打开多少个临时文件 – 也许MOVEFILE_DELAY_UNTIL_REBOOT可以注册的文件数量有限制?这是一个系统范围的资源,我只会谨慎使用.
delphi – 如何将多个文件扩展名传递给TDirectory.GetFiles?
SearchPattern
的参数.Embarcadero的文档说
The mask used when matching file names (for example,“*.exe” matches all the executable files).
但是,我想传递多种文件类型.我从FilterComboBox.Mask中获取这些类型.所以,它是一个看起来像’* .txt; * .rtf; * .doc’的字符串.
我试图将该字符串直接传递给GetFiles,但它不起作用.我是否必须解析它,将其分解成碎片并将每个单独的部分提供给GetFiles?
解决方法
Masks.MatchesMask
来测试与搜索模式的匹配.此功能仅支持对单个掩码进行屏蔽.
另一种方法是使用允许TFilterPredicate的GetFiles重载.您提供了一个谓词,用于测试名称是否与您的模式匹配.
uses StrUtils,Types,Masks,IoUtils; function MyGetFiles(const Path,Masks: string): TStringDynArray; var MaskArray: TStringDynArray; Predicate: TDirectory.TFilterPredicate; begin MaskArray := SplitString(Masks,';'); Predicate := function(const Path: string; const SearchRec: TSearchRec): Boolean var Mask: string; begin for Mask in MaskArray do if MatchesMask(SearchRec.Name,Mask) then exit(True); exit(False); end; Result := TDirectory.GetFiles(Path,Predicate); end;
请注意,MatchesMask每次调用时都会创建并销毁分配了TMask
的堆.我可以想象,这是长时间搜索的性能瓶颈.在这种情况下,您可以从MaskArray创建一个TMask对象数组.并使用谓词中的那些进行测试.我不知道这是否是一个有效的关注,只是在我仔细阅读代码时发生的事情.
我们今天的关于delphi – 如何对单个基本文件“diff”多个文件?和delphi 文件夹下所有文件的分享已经告一段落,感谢您的关注,如果您想了解更多关于Delphi SHMultiFileProperties查看多个文件属性、delphi – 如何在不覆盖现有文件的情况下创建线程文件?、delphi – 如何处理临时文件?、delphi – 如何将多个文件扩展名传递给TDirectory.GetFiles?的相关信息,请在本站查询。
本文标签: