{"id":221,"date":"2009-02-11T16:00:00","date_gmt":"2009-02-11T08:00:00","guid":{"rendered":""},"modified":"2013-11-18T21:12:42","modified_gmt":"2013-11-18T13:12:42","slug":"delphi%e6%96%87%e4%bb%b6%e6%93%8d%e4%bd%9c%e6%89%80%e6%b6%89%e5%8f%8a%e7%9a%84%e4%b8%80%e4%ba%9b%e5%87%bd%e6%95%b0","status":"publish","type":"post","link":"https:\/\/kyle.ai\/blog\/221.html","title":{"rendered":"Delphi\u6587\u4ef6\u64cd\u4f5c\u6240\u6d89\u53ca\u7684\u4e00\u4e9b\u51fd\u6570"},"content":{"rendered":"<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\nRemoveDirectory\r\n\/\/\u83b7\u53d6\u5f53\u524d\u6587\u4ef6\u5939 GetCurrentDir\r\n\/\/\u8bbe\u7f6e\u5f53\u524d\u6587\u4ef6\u5939 SetCurrentDir; ChDir; SetCurrentDirectory\r\n\/\/\u83b7\u53d6\u6307\u5b9a\u9a71\u52a8\u5668\u7684\u5f53\u524d\u8def\u5f84\u540d GetDir\r\n\/\/\u6587\u4ef6\u6539\u540d RenameFile\r\n\/\/\u5efa\u7acb\u6587\u4ef6\u5939 CreateDir; CreateDirectory; ForceDirectories\r\n\/\/\u5220\u9664\u7a7a\u6587\u4ef6\u5939 RemoveDir; RemoveDirectory\r\n\/\/\u5efa\u7acb\u65b0\u6587\u4ef6 FileCreate\r\n\/\/\u83b7\u53d6\u5f53\u524d\u6587\u4ef6\u7684\u7248\u672c\u53f7 GetFileVersion\r\n\/\/\u83b7\u53d6\u78c1\u76d8\u7a7a\u95f4 DiskSize; DiskFree\r\n\/\/\u641c\u7d22\u6587\u4ef6 FindFirst; FindNext; FindClose\r\n\/\/\u8bfb\u53d6\u4e0e\u8bbe\u7f6e\u6587\u4ef6\u5c5e\u6027 FileGetAttr; FileSetAttr\r\n\/\/\u83b7\u53d6\u6587\u4ef6\u7684\u521b\u5efa\u65f6\u95f4 FileAge; FileDateToDateTime\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\/\/\u5224\u65ad\u6587\u4ef6\u662f\u5426\u5b58\u5728 FileExists\r\nvar\r\nf: string;\r\nbegin\r\nf := \u2018c:\\temp\\test.txt\u2019;\r\n   if not FileExists(f) then\r\n   begin\r\n\/\/\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\r\n   end;\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\/\/\u5224\u65ad\u6587\u4ef6\u5939\u662f\u5426\u5b58\u5728 DirectoryExists\r\nvar\r\ndir: string;\r\nbegin\r\ndir := \u2018c:\\temp\u2019;\r\n   if not DirectoryExists(dir) then\r\n   begin\r\n\/\/\u5982\u679c\u6587\u4ef6\u5939\u4e0d\u5b58\u5728\r\n   end;\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u5220\u9664\u6587\u4ef6 DeleteFile; Windows.DeleteFile\r\nvar\r\nf: string;\r\nbegin\r\nf := \u2018c:\\temp\\test.txt\u2019;\r\n\/\/DeleteFile(f); \/\/\u8fd4\u56de Boolean\r\n\r\n\/\/\u6216\u8005\u7528\u7cfb\u7edfAPI:\r\nWindows.DeleteFile(PChar(f)); \/\/\u8fd4\u56de Boolean\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u5220\u9664\u6587\u4ef6\u5939 RemoveDir; RemoveDirectory\r\nvar\r\ndir: string;\r\nbegin\r\ndir := \u2018c:\\temp\u2019;\r\nRemoveDir(dir); \/\/\u8fd4\u56de Boolean\r\n\r\n\/\/\u6216\u8005\u7528\u7cfb\u7edf API:\r\nRemoveDirectory(PChar(dir)); \/\/\u8fd4\u56de Boolean\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u83b7\u53d6\u5f53\u524d\u6587\u4ef6\u5939 GetCurrentDir\r\nvar\r\ndir: string;\r\nbegin\r\ndir := GetCurrentDir;\r\nShowMessage(dir); \/\/C:\\Projects\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u8bbe\u7f6e\u5f53\u524d\u6587\u4ef6\u5939 SetCurrentDir; ChDir; SetCurrentDirectory\r\nvar\r\ndir: string;\r\nbegin\r\ndir := \u2018c:\\temp\u2019;\r\n   if SetCurrentDir(dir) then\r\n    ShowMessage(GetCurrentDir); \/\/c:\\temp\r\n\r\n\/\/\u6216\u8005\r\nChDir(dir); \/\/\u65e0\u8fd4\u56de\u503c\r\n\r\n\/\/\u4e5f\u53ef\u4ee5\u4f7f\u7528API:\r\nSetCurrentDirectory(PChar(Dir)); \/\/\u8fd4\u56de Boolean\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u83b7\u53d6\u6307\u5b9a\u9a71\u52a8\u5668\u7684\u5f53\u524d\u8def\u5f84\u540d GetDir\r\nvar\r\ndir: string;\r\nb: Byte;\r\nbegin\r\nb := 0;\r\nGetDir(b,dir);\r\nShowMessage(dir); \/\/\r\n\r\n\/\/\u7b2c\u4e00\u4e2a\u53c2\u6570: 1\u30012\u30013\u30014\u2026\u5206\u522b\u5bf9\u5e94: A\u3001B\u3001C\u3001D\u2026\r\n\/\/0 \u662f\u7f3a\u7701\u9a71\u52a8\u5668\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u6587\u4ef6\u6539\u540d RenameFile\r\nvar\r\nOldName,NewName: string;\r\nbegin\r\nOldName := \u2018c:\\temp\\Old.txt\u2019;\r\nNewName := \u2018c:\\temp\\New.txt\u2019;\r\n\r\n   if RenameFile(OldName,NewName) then\r\n    ShowMessage(\u2018\u6539\u540d\u6210\u529f!\u2019);\r\n\r\n\/\/\u4e5f\u53ef\u4ee5:\r\nSetCurrentDir(\u2018c:\\temp\u2019);\r\nOldName := \u2018Old.txt\u2019;\r\nNewName := \u2018New.txt\u2019;\r\n\r\n   if RenameFile(OldName,NewName) then\r\n    ShowMessage(\u2018\u6539\u540d\u6210\u529f!\u2019);\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u5efa\u7acb\u6587\u4ef6\u5939 CreateDir; CreateDirectory; ForceDirectories\r\nvar\r\ndir: string;\r\nbegin\r\ndir := \u2018c:\\temp\\delphi\u2019;\r\n   if not DirectoryExists(dir) then\r\n    CreateDir(dir); \/\/\u8fd4\u56de Boolean\r\n\r\n\/\/\u4e5f\u53ef\u4ee5\u76f4\u63a5\u7528API:\r\nCreateDirectory(PChar(dir),nil); \/\/\u8fd4\u56de Boolean\r\n\r\n\/\/\u5982\u679c\u7f3a\u5c11\u4e0a\u5c42\u76ee\u5f55\u5c06\u81ea\u52a8\u8865\u9f50:\r\ndir := \u2018c:\\temp\\CodeGear\\Delphi\\2007\\\u4e07\u4e00\u2019;\r\nForceDirectories(dir); \/\/\u8fd4\u56de Boolean\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u5220\u9664\u7a7a\u6587\u4ef6\u5939 RemoveDir; RemoveDirectory\r\nvar\r\ndir: string;\r\nbegin\r\ndir := \u2018c:\\temp\\delphi\u2019;\r\nRemoveDir(dir); \/\/\u8fd4\u56de Boolean\r\n\r\n\/\/\u4e5f\u53ef\u4ee5\u76f4\u63a5\u7528API:\r\nRemoveDirectory(PChar(dir)); \/\/\u8fd4\u56de Boolean\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u5efa\u7acb\u65b0\u6587\u4ef6 FileCreate\r\nvar\r\nFileName: string;\r\ni: Integer;\r\nbegin\r\nFileName := \u2018c:\\temp\\test.dat\u2019;\r\ni := FileCreate(FileName);\r\n\r\n   if i&gt;0 then\r\n    ShowMessage(\u2018\u65b0\u6587\u4ef6\u7684\u53e5\u67c4\u662f: \u2018 + IntToStr(i))\r\n   else\r\n    ShowMessage(\u2018\u521b\u5efa\u5931\u8d25!\u2019);\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u83b7\u53d6\u5f53\u524d\u6587\u4ef6\u7684\u7248\u672c\u53f7 GetFileVersion\r\nvar\r\ns: string;\r\ni: Integer;\r\nbegin\r\ns := \u2018C:\\WINDOWS\\notepad.exe\u2019;\r\ni := GetFileVersion(s); \/\/\u5982\u679c\u6ca1\u6709\u7248\u672c\u53f7\u8fd4\u56de -1\r\nShowMessage(IntToStr(i)); \/\/327681 \u8fd9\u662f\u5f53\u524d\u8bb0\u4e8b\u672c\u7684\u7248\u672c\u53f7(\u8fd8\u5e94\u8be5\u518d\u8f6c\u6362\u4e00\u4e0b)\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u83b7\u53d6\u78c1\u76d8\u7a7a\u95f4 DiskSize; DiskFree\r\nvar\r\nr: Real;\r\ns: string;\r\nbegin\r\nr := DiskSize(3); \/\/\u83b7\u53d6C:\u603b\u7a7a\u95f4, \u5355\u4f4d\u662f\u5b57\u8282\r\nr := r\/1024\/1024\/1024;\r\nStr(r:0:2,s); \/\/\u683c\u5f0f\u4e3a\u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570\u7684\u5b57\u7b26\u4e32\r\ns := \u2018C\u76d8\u603b\u7a7a\u95f4\u662f: \u2018 + s + \u2018 GB\u2019;\r\nShowMessage(s); \/\/xx.xx GB\r\n\r\nr := DiskFree(3); \/\/\u83b7\u53d6C:\u53ef\u7528\u7a7a\u95f4\r\nr := r\/1024\/1024\/1024;\r\nStr(r:0:2,s);\r\ns := \u2018C\u76d8\u53ef\u7528\u7a7a\u95f4\u662f: \u2018 + s + \u2018 GB\u2019;\r\nShowMessage(s); \/\/xx.xx GB\r\nend;\r\n\r\n\/\/\u67e5\u627e\u4e00\u4e2a\u6587\u4ef6 FileSearch\r\nvar\r\nFileName,Dir,s: string;\r\nbegin\r\nFileName := \u2018notepad.exe\u2019;\r\nDir := \u2018c:\\windows\u2019;\r\ns := FileSearch(FileName,Dir);\r\n\r\n   if s&lt;&gt;\u201d then\r\n    ShowMessage(s) \/\/c:\\windows\\notepad.exe\r\n   else\r\n    ShowMessage(\u2018\u6ca1\u627e\u5230\u2019);\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u641c\u7d22\u6587\u4ef6 FindFirst; FindNext; FindClose\r\nvar\r\nsr: TSearchRec; \/\/\u5b9a\u4e49 TSearchRec \u7ed3\u6784\u53d8\u91cf\r\nAttr: Integer;     \/\/\u6587\u4ef6\u5c5e\u6027\r\ns: string;       \/\/\u8981\u641c\u7d22\u7684\u5185\u5bb9\r\nList: TStringList; \/\/\u5b58\u653e\u641c\u7d22\u7ed3\u679c\r\nbegin\r\ns := \u2018c:\\windows\\*.txt\u2019;\r\nAttr := faAnyFile;          \/\/\u6587\u4ef6\u5c5e\u6027\u503cfaAnyFile\u8868\u793a\u662f\u6240\u6709\u6587\u4ef6\r\nList := TStringList.Create; \/\/List\u5efa\u7acb\r\n\r\n   if FindFirst(s,Attr,sr)=0 then \/\/\u5f00\u59cb\u641c\u7d22,\u5e76\u7ed9 sr \u8d4b\u4e88\u4fe1\u606f, \u8fd4\u56de0\u8868\u793a\u627e\u5230\u7b2c\u4e00\u4e2a\r\n   begin\r\nrepeat                       \/\/\u5982\u679c\u6709\u7b2c\u4e00\u4e2a\u5c31\u7ee7\u7eed\u627e\r\n   List.Add(sr.Name);       \/\/\u7528List\u8bb0\u4e0b\u7ed3\u679c\r\nuntil(FindNext(sr)&lt;&gt;0);    \/\/\u56e0\u4e3asr\u5df2\u7ecf\u6709\u4e86\u641c\u7d22\u4fe1\u606f, FindNext\u53ea\u8981\u8fd9\u4e00\u4e2a\u53c2\u6570, \u8fd4\u56de0\u8868\u793a\u627e\u5230\r\n   end;\r\nFindClose(sr);                 \/\/\u9700\u8981\u7ed3\u675f\u641c\u7d22, \u641c\u7d22\u662f\u5185\u542b\u53e5\u67c4\u7684\r\n\r\nShowMessage(List.Text);        \/\/\u663e\u793a\u641c\u7d22\u7ed3\u679c\r\nList.Free;                   \/\/\u91ca\u653eList\r\n\r\n\/\/\u66f4\u591a\u6ce8\u91ca:\r\n\/\/TSearchRec \u7ed3\u6784\u662f\u5185\u6db5\u6587\u4ef6\u5927\u5c0f\u3001\u540d\u79f0\u3001\u5c5e\u6027\u4e0e\u65f6\u95f4\u7b49\u4fe1\u606f\r\n\/\/TSearchRec \u4e2d\u7684\u5c5e\u6027\u662f\u4e00\u4e2a\u6574\u6570\u503c, \u53ef\u80fd\u7684\u503c\u6709:\r\n\/\/faReadOnly 1 \u53ea\u8bfb\u6587\u4ef6\r\n\/\/faHidden     2 \u9690\u85cf\u6587\u4ef6\r\n\/\/faSysFile 4 \u7cfb\u7edf\u6587\u4ef6\r\n\/\/faVolumeID 8 \u5377\u6807\u6587\u4ef6\r\n\/\/faDirectory 16 \u76ee\u5f55\u6587\u4ef6\r\n\/\/faArchive 32 \u5f52\u6863\u6587\u4ef6\r\n\/\/faSymLink 64 \u94fe\u63a5\u6587\u4ef6\r\n\/\/faAnyFile 63 \u4efb\u610f\u6587\u4ef6\r\n\r\n\/\/s \u7684\u503c\u4e5f\u53ef\u4ee5\u4f7f\u7528?\u901a\u914d\u7b26,\u597d\u50cf\u53ea\u652f\u63017\u4e2a?, \u5982\u679c\u6ca1\u6709\u6761\u4ef6\u5c31\u662f*, \u8b6c\u5982: C:\\*\r\n\/\/\u5b9e\u9645\u4f7f\u7528\u4e2d\u8fd8\u5e94\u8be5\u5728 repeat \u4e2d\u63d0\u4e9b\u6761\u4ef6, \u8b6c\u5982\u5224\u65ad\u5982\u679c\u662f\u6587\u4ef6\u5939\u5c31\u9012\u5f52\u641c\u7d22\u7b49\u7b49\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u8bfb\u53d6\u4e0e\u8bbe\u7f6e\u6587\u4ef6\u5c5e\u6027 FileGetAttr; FileSetAttr\r\nvar\r\nFileName: string;\r\nAttr: Integer; \/\/\u5c5e\u6027\u503c\u662f\u4e00\u4e2a\u6574\u6570\r\nbegin\r\nFileName := \u2018c:\\temp\\Test.txt\u2019;\r\nAttr := FileGetAttr(FileName);\r\nShowMessage(IntToStr(Attr)); \/\/32, \u5b58\u6863\u6587\u4ef6\r\n\r\n\/\/\u8bbe\u7f6e\u4e3a\u9690\u85cf\u548c\u53ea\u8bfb\u6587\u4ef6:\r\nAttr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;\r\n   if FileSetAttr(FileName,Attr)=0 then \/\/\u8fd4\u56de0\u8868\u793a\u6210\u529f\r\n    ShowMessage(\u2018\u8bbe\u7f6e\u6210\u529f!\u2019);\r\n\r\n\/\/\u5c5e\u6027\u53ef\u9009\u503c(\u6709\u4e9b\u7528\u4e0d\u7740):\r\n\/\/FILE_ATTRIBUTE_READONLY = 1; \u53ea\u8bfb\r\n\/\/FILE_ATTRIBUTE_HIDDEN = 2; \u9690\u85cf\r\n\/\/FILE_ATTRIBUTE_SYSTEM = 4; \u7cfb\u7edf\r\n\/\/FILE_ATTRIBUTE_DIRECTORY = 16\r\n\/\/FILE_ATTRIBUTE_ARCHIVE = 32; \u5b58\u6863\r\n\/\/FILE_ATTRIBUTE_DEVICE = 64\r\n\/\/FILE_ATTRIBUTE_NORMAL = 128; \u4e00\u822c\r\n\/\/FILE_ATTRIBUTE_TEMPORARY = 256\r\n\/\/FILE_ATTRIBUTE_SPARSE_FILE = 512\r\n\/\/FILE_ATTRIBUTE_REPARSE_POINT = 1204\r\n\/\/FILE_ATTRIBUTE_COMPRESSED = 2048; \u538b\u7f29\r\n\/\/FILE_ATTRIBUTE_OFFLINE = 4096\r\n\/\/FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; \u4e0d\u88ab\u7d22\u5f15\r\n\/\/FILE_ATTRIBUTE_ENCRYPTED = 16384\r\nend;\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"brush: delphi; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u83b7\u53d6\u6587\u4ef6\u7684\u521b\u5efa\u65f6\u95f4 FileAge; FileDateToDateTime\r\nvar\r\nFileName: string;\r\nti: Integer;\r\ndt: TDateTime;\r\nbegin\r\nFileName := \u2018c:\\temp\\Test.txt\u2019;\r\nti := FileAge(FileName);\r\nShowMessage(IntToStr(ti)); \/\/\u8fd4\u56de: 931951472, \u9700\u8981\u8f6c\u6362\r\n\r\ndt := FileDateToDateTime(ti); \/\/\u8f6c\u6362\r\nShowMessage(DateTimeToStr(dt)); \/\/2007-12-12 14:27:32\r\nend;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>RemoveDirectory \/\/\u83b7\u53d6\u5f53\u524d\u6587\u4ef6\u5939 GetCurrentDir \/\/\u8bbe\u7f6e\u5f53\u524d\u6587\u4ef6\u5939 SetCu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-221","post","type-post","status-publish","format-standard","hentry","category-code_related"],"_links":{"self":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/comments?post=221"}],"version-history":[{"count":1,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/221\/revisions"}],"predecessor-version":[{"id":4797,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/posts\/221\/revisions\/4797"}],"wp:attachment":[{"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/media?parent=221"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/categories?post=221"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kyle.ai\/blog\/wp-json\/wp\/v2\/tags?post=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}