{"id":636,"date":"2008-05-17T16:17:16","date_gmt":"2008-05-17T16:17:16","guid":{"rendered":"http:\/\/6teen.ru\/?p=482"},"modified":"2008-05-17T16:17:16","modified_gmt":"2008-05-17T16:17:16","slug":"2430","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=636","title":{"rendered":"\u041a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433"},"content":{"rendered":"<p>\u041a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u041a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\n\nprocedure TForm1.Button1Click(Sender: TObject);\nvar\nlpFileOp: TSHFileOpStruct;\nbegin\nFillChar(lpFileOp,SizeOf(lpFileOp),0);\nlpFileOp.Wnd := Handle;\nlpFileOp.wFunc := FO_DELETE;\nlpFileOp.pFrom := PChar(Edit1.Text);\nlpFileOp.fFlags := FOF_NOCONFIRMATION;\nSHFileOperation(lpFileOp);\nend;\n\n*********************************************************************\n\n\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u043e\u0432 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0435 - \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u043c\u0443 \u0441\u0435\u0431\u044f.\n\u0424\u043b\u0430\u0433 RemoveRoot \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u044f.\n\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043a\u043e\u0440\u043d\u044f \u043e\u0447\u0438\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.\n\nfunction FullRemoveDir(Dir:string; RemoveRoot:boolean):Boolean;\nvar i:Integer;\nSRec:TSearchRec;\nFN:String;\nbegin\nResult:= False;\nif Dir = ?? then exit;\nif not DirectoryExists(Dir) then exit;\nResult:= True;\n\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043b\u044d\u0448 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0438 \u0437\u0430\u0434\u0430\u0435\u043c \u043c\u0430\u0441\u043a\u0443 - \"\u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b\"\nDir:= IncludeTrailingBackslash(Dir) + ?*.*?;\ni:= FindFirst(Dir, faAnyFile, SRec);\nwhile i = 0 do\nbegin\n\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u0438\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e\nFN:= ExtractFileDir(Dir)+??+SRec.Name;\n\/\/ \u0415\u0441\u043b\u0438 \u044d\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439\nif SRec.Attr = faDirectory then\nbegin\nif (SRec.Name ?? ) and (SRec.Name ?.?) and (SRec.Name ?..?) then\n\/\/ \u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0432\u044b\u0437\u043e\u0432 \u044d\u0442\u043e\u0439 \u0436\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u0440\u043d\u044f\nFullRemoveDir(FN,True);\nend\nelse\n\/\/ \u0418\u043d\u0430\u0447\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0444\u0430\u0439\u043b\nbegin\nif SRec.Attr faArchive then FileSetAttr(FN, faArchive);\n\/\/ \u0415\u0441\u043b\u0438 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b \u043d\u0435 \u0443\u0434\u0430\u043b\u0435\u043d - \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439, \u043d\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u043a\u043e\u043d\u0446\u0430\nif not DeleteFile(FN) then Result:= false;\nend;\n\/\/ \u0411\u0435\u0440\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439\ni:= FindNext(SRec);\nend;\nFindClose(SRec);\n\n\/\/ \u0415\u0441\u043b\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u043e\u0440\u0435\u043d\u044c - \u0443\u0434\u0430\u043b\u044f\u0435\u043c\nif RemoveRoot then\ntry\nif not RemoveDir(Dir) then Result:= false;\nexcept\nResult:= false;\nend;\n\nend;\n\n*******************************************************************\n\n\u041a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043e \u0432\u0441\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c\n\nfunction DeleteDir(Dir  : string)  : boolean;\nVar\nFound  : integer;\nSearchRec : TSearchRec;\nbegin\nresult:=false;\nif IOResult<>0 then ;\nChDir(Dir);\nif IOResult<>0 then begin\nShowMessage('\u041d\u0435 \u043c\u043e\u0433\u0443 \u0432\u043e\u0439\u0442\u0438 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433: '+Dir); exit;\nend;\nFound := FindFirst('*.*', faAnyFile, SearchRec);\nwhile Found = 0 do\nbegin\nif (SearchRec.Name<>'.')and(SearchRec.Name<>'..') then\nif (SearchRec.Attr and faDirectory)<>0 then begin\nif not DeleteDir(SearchRec.Name) then exit;\nend else\nif not DeleteFile(SearchRec.Name) then begin\nShowMessage('\u041d\u0435 \u043c\u043e\u0433\u0443 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0444\u0430\u0439\u043b: '+SearchRec.Name);\nexit;\nend;\nFound := FindNext(SearchRec);\nend!\n;\nFindClose(SearchRec);\nChDir('..'); RmDir(Dir);\nresult:=IOResult=0;\nend;\n\n********************************************************************\n\nfunction myremovedir(sdir : string) : boolean;\nvar\niindex : integer;\nsearchrec : tsearchrec;\nsfilename : string;\nbegin\nresult := false;\nsdir := sdir + '\\*.*';\niindex := findfirst(sdir, faanyfile, searchrec);\n\nwhile iindex = 0 do begin\nsfilename := extractfiledir(sdir)+'\\'+searchrec.name;\nif searchrec.attr = fadirectory then begin\nif (searchrec.name <> '' ) and\n(searchrec.name <> '.') and\n(searchrec.name <> '..') then\nmyremovedir(sfilename);\nend else begin\nif searchrec.attr <> faarchive then\nfilesetattr(sfilename, faarchive);\nif not deletefile(sfilename) then\nshowmessage('could not delete ' + sfilename);\nend;\niindex := findnext(searchrec);\nend;\n\nfindclose(searchrec);\n\nremovedir(extractfiledir(sdir));\nresult := true;\nend;\n\n\u0414\u043b\u044f \u0442\u0435\u0445 \u043a\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0434\u0440\u0443\u0436\u0438\u0442 \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 \u043d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 (\u0433\u0434\u0435-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u0432\u044b\u0448\u0435 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0441\u0430\u043c\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f):\n\nif not myremovedir('c:\\mydir') then\nshowmessage('can not delete dir');\n\n\u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e, \u0442\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0431\u0443\u0434\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d, \u0435\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.\n\n******************************************************\n\nprocedure TForm1.Button1Click(Sender: TObject);\nvar\n  DirInfo: TSearchRec;\n  r: integer;\nbegin\n  r := FindFirst('C:\\Download\\*.*', FaAnyfile, DirInfo);\n  while r = 0 do\n  begin\n    if ((DirInfo.Attr and FaDirectory <> FaDirectory) and\n      (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then\n    if DeleteFile(pChar('C:\\Download\\'+DirInfo.Name))=false then\n      ShowMessage('Unable to delete: C:\\Download\\'+DirInfo.Name);\n    r := FindNext(DirInfo);\n  end;\n  SysUtils.FindClose(DirInfo);\n  if RemoveDirectory('C:\\Download\\') = false then\n    ShowMessage('Unable to delete directory: C:\\Download\\');\nend;\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041a\u0430\u043a \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[448,459],"tags":[1361,1481,1805],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/636"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=636"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/636\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=636"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}