用FindFirstFile 代替FindFirst 在线等,急啊,100分.刚才30分没解决问题,再加100,谁能帮我130 ( 积分: 100 )

  • 主题发起人 主题发起人 darlingpeng
  • 开始时间 开始时间
D

darlingpeng

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure&nbsp;myFind(ss:&nbsp;string);<br>&nbsp;&nbsp;var<br>&nbsp;&nbsp;&nbsp;&nbsp;sr:&nbsp;TSearchRec;<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;Pn_Hint.Visible&nbsp;then&nbsp;Abort;&nbsp;&nbsp;//控制退出<br><br>&nbsp;&nbsp;&nbsp;&nbsp;RzLabel_H.Caption&nbsp;:=&nbsp;GetString('idsearch')&nbsp;+&nbsp;ss;<br>&nbsp;&nbsp;&nbsp;&nbsp;RzLabel_H.Repaint;<br>&nbsp;&nbsp;&nbsp;&nbsp;inc(pCount);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;pCount&nbsp;&gt;&nbsp;5&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application.ProcessMessages;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pCount&nbsp;:=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;FindFirst(ss&nbsp;+&nbsp;'/*.*',&nbsp;faAnyFile,&nbsp;sr)&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ext&nbsp;:=&nbsp;UpperCase('*'&nbsp;+&nbsp;ExtractFileExt(sr.Name));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Ext&nbsp;&lt;&gt;&nbsp;'*')&nbsp;and&nbsp;(Ext&nbsp;&lt;&gt;&nbsp;'*.')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;AnsiContainsStr(Exts,&nbsp;Ext)&nbsp;then&nbsp;//判断后缀名<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;IsEn(Pchar(ss&nbsp;+&nbsp;'/'&nbsp;+&nbsp;sr.Name))&nbsp;=&nbsp;0&nbsp;then&nbsp;//判断是否加密<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc(FCount);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;EnFile(Pchar(ss&nbsp;+&nbsp;'/'&nbsp;+&nbsp;sr.Name),&nbsp;305419890)&nbsp;=&nbsp;1&nbsp;then&nbsp;//加密文件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inc(DCount);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Memo1.Lines.Add(ss&nbsp;+&nbsp;'/'&nbsp;+&nbsp;sr.Name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;until&nbsp;FindNext(sr)&nbsp;&lt;&gt;&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FindClose(sr);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;RzLabel_H_2.Caption&nbsp;:=&nbsp;GetString('idfind')&nbsp;+&nbsp;IntToStr(FCount)&nbsp;+&nbsp;'&nbsp;&nbsp;&nbsp;'&nbsp;+&nbsp;GetString('idencrypt')&nbsp;+&nbsp;IntToStr(DCount)&nbsp;+&nbsp;'&nbsp;个';<br>&nbsp;&nbsp;&nbsp;&nbsp;RzLabel_H_2.Repaint;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;FindFirst(ss&nbsp;+&nbsp;'/*',&nbsp;faDirectory&nbsp;+&nbsp;faHidden&nbsp;+&nbsp;faSysFile,&nbsp;sr)&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sr.Attr&nbsp;and&nbsp;faDirectory)&nbsp;=&nbsp;faDirectory&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sr.Name[1]&nbsp;&lt;&gt;&nbsp;'.')&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myFind(ss&nbsp;+&nbsp;'/'&nbsp;+&nbsp;sr.Name);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;until&nbsp;FindNext(sr)&nbsp;&lt;&gt;&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FindClose(sr);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;<br><br>这是我用改的那个函数,现在要求把&nbsp;FindFirst&nbsp;改为&nbsp;FindFirstFile,改怎么弄
 
因为用FindFirst&nbsp;有时间会出现异常,现在要用FindFirstFile编写
 
130分没的人要啊
 
有没有哪位大侠能帮帮小弟
 
不是一样的編写吗<br><br>FindFirstFile<br>是支持双字节而已
 
to&nbsp;&nbsp;lqcros<br>FindFirstFile&nbsp;不会用,你能不能给个例子,小弟蛮菜
 
FindFirst&nbsp;是delphi&nbsp;封装的&nbsp;FindFirstFile<br><br>你要看源码&nbsp;在delphi&nbsp;ide&nbsp;里<br>按住CTRL&nbsp;点击&nbsp;FindFirst&nbsp;就会<br><br>看到<br>function&nbsp;FindFirst(const&nbsp;Path:&nbsp;string;&nbsp;Attr:&nbsp;Integer;<br>&nbsp;&nbsp;var&nbsp;&nbsp;F:&nbsp;TSearchRec):&nbsp;Integer;<br>const<br>&nbsp;&nbsp;faSpecial&nbsp;=&nbsp;faHidden&nbsp;or&nbsp;faSysFile&nbsp;or&nbsp;faVolumeID&nbsp;or&nbsp;faDirectory;<br>{$IFDEF&nbsp;MSWINDOWS}<br>begin<br>&nbsp;&nbsp;F.ExcludeAttr&nbsp;:=&nbsp;not&nbsp;Attr&nbsp;and&nbsp;faSpecial;<br>&nbsp;&nbsp;F.FindHandle&nbsp;:=&nbsp;FindFirstFile(PChar(Path),&nbsp;F.FindData);<br>&nbsp;&nbsp;if&nbsp;F.FindHandle&nbsp;&lt;&gt;&nbsp;INVALID_HANDLE_VALUE&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;FindMatchingFile(F);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Result&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;FindClose(F);<br>&nbsp;&nbsp;end&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;GetLastError;<br>end;<br><br>所以你用&nbsp;FindFirst&nbsp;跟用&nbsp;FindFirstFile&nbsp;是一样的
 
这我知道,但是<br>FindFirst和FindFirstFile的函数定义不一样啊<br>如果直接用&nbsp;FindFirstFile&nbsp;代替&nbsp;FindFirst&nbsp;会有问题
 
这应該不是FindFist的问题,应該是你的程序哪里有问题哈
 
程序没有问题,用FindFirst用的蛮好,但是现在老大要我改成FindFirstFile
 
var<br>&nbsp;&nbsp;&nbsp;&nbsp;sr:&nbsp;TSearchRec;<br>&nbsp;&nbsp;&nbsp;&nbsp;FindData:&nbsp;TWin32FindData&nbsp;;<br>FindHandle:&nbsp;HWND;
 
FindHandle&nbsp;:=&nbsp;FindFirstFile(pchar(ss&nbsp;+&nbsp;'/*.*'),&nbsp;FindData)&nbsp;<br>if&nbsp;FindHandle&nbsp;&lt;&gt;&nbsp;INVALID_HANDLE_VALUE&nbsp;then
 
FindNextFile(FindHandle,&nbsp;FindData)
 
我是这样改的啊
 
其实只需改一下参数&nbsp;就可以了<br><br>用法差不多,你参考delphi封装好的三<br><br><br>function&nbsp;FindMatchingFile(var&nbsp;F:&nbsp;TSearchRec):&nbsp;Integer;<br>{$IFDEF&nbsp;MSWINDOWS}<br>var<br>&nbsp;&nbsp;LocalFileTime:&nbsp;TFileTime;<br>begin<br>&nbsp;&nbsp;with&nbsp;F&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;FindData.dwFileAttributes&nbsp;and&nbsp;ExcludeAttr&nbsp;&lt;&gt;&nbsp;0&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;FindNextFile(FindHandle,&nbsp;FindData)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;GetLastError;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;FileTimeToLocalFileTime(FindData.ftLastWriteTime,&nbsp;LocalFileTime);<br>&nbsp;&nbsp;&nbsp;&nbsp;FileTimeToDosDateTime(LocalFileTime,&nbsp;LongRec(Time).Hi,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LongRec(Time).Lo);<br>&nbsp;&nbsp;&nbsp;&nbsp;Size&nbsp;:=&nbsp;FindData.nFileSizeLow;<br>&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;FindData.dwFileAttributes;<br>&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;:=&nbsp;FindData.cFileName;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;0;<br>end;<br>{$ENDIF}<br>{$IFDEF&nbsp;LINUX}<br>var<br>&nbsp;&nbsp;PtrDirEnt:&nbsp;PDirEnt;<br>&nbsp;&nbsp;Scratch:&nbsp;TDirEnt;<br>&nbsp;&nbsp;StatBuf:&nbsp;TStatBuf;<br>&nbsp;&nbsp;LinkStatBuf:&nbsp;TStatBuf;<br>&nbsp;&nbsp;FName:&nbsp;string;<br>&nbsp;&nbsp;Attr:&nbsp;Integer;<br>&nbsp;&nbsp;Mode:&nbsp;mode_t;<br>begin<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;-1;<br>&nbsp;&nbsp;PtrDirEnt&nbsp;:=&nbsp;nil;<br>&nbsp;&nbsp;if&nbsp;readdir_r(F.FindHandle,&nbsp;@Scratch,&nbsp;PtrDirEnt)&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;Exit;<br>&nbsp;&nbsp;while&nbsp;PtrDirEnt&nbsp;&lt;&gt;&nbsp;nil&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;fnmatch(PChar(F.Pattern),&nbsp;PtrDirEnt.d_name,&nbsp;0)&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;//&nbsp;F.PathOnly&nbsp;must&nbsp;include&nbsp;trailing&nbsp;backslash<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FName&nbsp;:=&nbsp;F.PathOnly&nbsp;+&nbsp;string(PtrDirEnt.d_name);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;lstat(PChar(FName),&nbsp;StatBuf)&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mode&nbsp;:=&nbsp;StatBuf.st_mode;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;S_ISDIR(Mode)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;Attr&nbsp;or&nbsp;faDirectory<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;S_ISREG(Mode)&nbsp;then&nbsp;&nbsp;//&nbsp;directories&nbsp;shouldn't&nbsp;be&nbsp;treated&nbsp;as&nbsp;system&nbsp;files<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;S_ISLNK(Mode)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;Attr&nbsp;or&nbsp;faSymLink;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(stat(PChar(FName),&nbsp;LinkStatBuf)&nbsp;=&nbsp;0)&nbsp;and<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_ISDIR(LinkStatBuf.st_mode)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;Attr&nbsp;or&nbsp;faDirectory<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;Attr&nbsp;or&nbsp;faSysFile;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(PtrDirEnt.d_name[0]&nbsp;=&nbsp;'.')&nbsp;and&nbsp;(PtrDirEnt.d_name[1]&nbsp;&lt;&gt;&nbsp;#0)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;not&nbsp;((PtrDirEnt.d_name[1]&nbsp;=&nbsp;'.')&nbsp;and&nbsp;(PtrDirEnt.d_name[2]&nbsp;=&nbsp;#0))&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;Attr&nbsp;or&nbsp;faHidden;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;euidaccess(PChar(FName),&nbsp;W_OK)&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Attr&nbsp;:=&nbsp;Attr&nbsp;or&nbsp;faReadOnly;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Attr&nbsp;and&nbsp;F.ExcludeAttr&nbsp;=&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F.Size&nbsp;:=&nbsp;StatBuf.st_size;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F.Attr&nbsp;:=&nbsp;Attr;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F.Mode&nbsp;:=&nbsp;StatBuf.st_mode;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F.Name&nbsp;:=&nbsp;PtrDirEnt.d_name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F.Time&nbsp;:=&nbsp;StatBuf.st_mtime;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;-1;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;readdir_r(F.FindHandle,&nbsp;@Scratch,&nbsp;PtrDirEnt)&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Break;<br>&nbsp;&nbsp;end&nbsp;//&nbsp;End&nbsp;of&nbsp;While<br>end;<br>{$ENDIF}<br><br>function&nbsp;FindFirst(const&nbsp;Path:&nbsp;string;&nbsp;Attr:&nbsp;Integer;<br>&nbsp;&nbsp;var&nbsp;&nbsp;F:&nbsp;TSearchRec):&nbsp;Integer;<br>const<br>&nbsp;&nbsp;faSpecial&nbsp;=&nbsp;faHidden&nbsp;or&nbsp;faSysFile&nbsp;or&nbsp;faVolumeID&nbsp;or&nbsp;faDirectory;<br>{$IFDEF&nbsp;MSWINDOWS}<br>begin<br>&nbsp;&nbsp;F.ExcludeAttr&nbsp;:=&nbsp;not&nbsp;Attr&nbsp;and&nbsp;faSpecial;<br>&nbsp;&nbsp;F.FindHandle&nbsp;:=&nbsp;FindFirstFile(PChar(Path),&nbsp;F.FindData);<br>&nbsp;&nbsp;if&nbsp;F.FindHandle&nbsp;&lt;&gt;&nbsp;INVALID_HANDLE_VALUE&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;FindMatchingFile(F);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Result&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;FindClose(F);<br>&nbsp;&nbsp;end&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;GetLastError;<br>end;<br>{$ENDIF}<br>{$IFDEF&nbsp;LINUX}<br>begin<br>&nbsp;&nbsp;F.ExcludeAttr&nbsp;:=&nbsp;not&nbsp;Attr&nbsp;and&nbsp;faSpecial;<br>&nbsp;&nbsp;F.PathOnly&nbsp;:=&nbsp;ExtractFilePath(Path);<br>&nbsp;&nbsp;F.Pattern&nbsp;:=&nbsp;ExtractFileName(Path);<br>&nbsp;&nbsp;if&nbsp;F.PathOnly&nbsp;=&nbsp;''&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;F.PathOnly&nbsp;:=&nbsp;IncludeTrailingPathDelimiter(GetCurrentDir);<br><br>&nbsp;&nbsp;F.FindHandle&nbsp;:=&nbsp;opendir(PChar(F.PathOnly));<br>&nbsp;&nbsp;if&nbsp;F.FindHandle&nbsp;&lt;&gt;&nbsp;nil&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;FindMatchingFile(F);<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Result&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FindClose(F);<br>&nbsp;&nbsp;end<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;Result:=&nbsp;GetLastError;<br>end;<br>{$ENDIF}<br><br>function&nbsp;FindNext(var&nbsp;F:&nbsp;TSearchRec):&nbsp;Integer;<br>begin<br>{$IFDEF&nbsp;MSWINDOWS}<br>&nbsp;&nbsp;if&nbsp;FindNextFile(F.FindHandle,&nbsp;F.FindData)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;FindMatchingFile(F)&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;GetLastError;<br>{$ENDIF}<br>{$IFDEF&nbsp;LINUX}<br>&nbsp;&nbsp;Result&nbsp;:=&nbsp;FindMatchingFile(F);<br>{$ENDIF}<br>end;<br><br>procedure&nbsp;FindClose(var&nbsp;F:&nbsp;TSearchRec);<br>begin<br>{$IFDEF&nbsp;MSWINDOWS}<br>&nbsp;&nbsp;if&nbsp;F.FindHandle&nbsp;&lt;&gt;&nbsp;INVALID_HANDLE_VALUE&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;Windows.FindClose(F.FindHandle);<br>&nbsp;&nbsp;&nbsp;&nbsp;F.FindHandle&nbsp;:=&nbsp;INVALID_HANDLE_VALUE;<br>&nbsp;&nbsp;end;<br>{$ENDIF}<br>{$IFDEF&nbsp;LINUX}<br>&nbsp;&nbsp;if&nbsp;F.FindHandle&nbsp;&lt;&gt;&nbsp;nil&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;closedir(F.FindHandle);<br>&nbsp;&nbsp;&nbsp;&nbsp;F.FindHandle&nbsp;:=&nbsp;nil;<br>&nbsp;&nbsp;end;<br>{$ENDIF}<br>end;
 
to&nbsp;lqcros,<br>我改的和你说的差不多,就是还没有实现啊
 
我晕,我记得在今天在另外一个贴讲了这个问题啊,无非就是参数的调用不一样,定义一个FindData:&nbsp;TWin32FindData&nbsp;;<br>变理来处理啊
 
不好意思,忘记加分了,<br>问题已解决
 
后退
顶部