[lazarus] dirsel.pas : Attached dirsel.zip
Bob Wingard
bwingard at gt.rr.com
Sat Aug 2 12:10:06 EDT 2003
Mattias Gaertner wrote:
>On Sat, 02 Aug 2003 10:04:24 -0400
>Bob Wingard <bwingard at gt.rr.com> wrote:
>
>
>
>>Vincent Snijders wrote:
>>
>>
>>
>>>Hi,
>>>
>>>Nice progress!
>>>
>>>I have a few remarks/questions:
>>>- The second FindFirst (used to look for subdirectories) in
>>>FindMatchingTextFiles needs a matching findclose.
>>>
>>>
>>>
>>Good eye, fixed.
>>
>>
>
>I tried to apply and got:
>
>patching file findinfilesdlg.pas
>patching file ideprocs.pp
>patch: **** malformed patch at line 71: Index: lcl/dirsel.pas
>
>The patch seems to be ok. Does someone know, what this means?
>
>
>Mattias
>
>
>
>
>>>- In TLazFindInFilesDialog.DirectoryBrowseClick you use if then
>>>to append the path delimeter. You can use PathDelim from SusUtils unit
>>>or DirectorySeparator from the system unit (both part of fpc RTL). You
>>>might look also to AppendPathDelim in the FileCtrl unit (part of the
>>>LCL).
>>>
>>>
>>>
>>Again, you are correct. There is another decleration of AppendPathDelim
>>off in the Codetools directory and that is the one that I originally
>>saw. fixed.
>>
>>
>>
>>>- Why do you use
>>>SysUtils.FindFirst(TempDir+FindMask,faAnyFile,FileInfo)
>>>and not
>>>SysUtils.FindFirst(TempDir+FindMask,faDirectory,FileInfo)
>>>when you are looking for (sub)directories?
>>>
>>>
>>>
>>This works on Windows but will not return any files on Linux. I am not
>>sure but I think it is because everything is a file under linux, so
>>directories are files with the directory attribute set.
>>
>>
>>
>>>Regards,
>>>Vincent Snijders.
>>>
>>>
>>>
>>>
>><snip>
>>Bob
>>
>>
>>
>
>
>
>
Could have been somthing I did. Try this one.
Index: findinfilesdlg.pas
===================================================================
RCS file: /FPC/CVS/projects/lazarus/findinfilesdlg.pas,v
retrieving revision 1.6
diff -u -r1.6 findinfilesdlg.pas
--- findinfilesdlg.pas 1 Aug 2003 09:44:51 -0000 1.6
+++ findinfilesdlg.pas 2 Aug 2003 16:35:44 -0000
@@ -62,6 +62,9 @@
implementation
+uses
+ filectrl;
+
{ TLazFindInFilesDialog }
constructor TLazFindInFilesDialog.Create(AOwner: TComponent);
@@ -340,10 +343,7 @@
begin
TheDirectory:= GetCurrentDir;
TheRootDir:= ExtractFileDrive(TheDirectory);
- if Length(TheRootDir)< 1 then
- TheRootDir:= '/' //Linux or Unix ?
- else
- TheRootDir:= TheRootDir + '\';
+ TheRootDir:= FileCtrl.AppendPathDelim(TheRootDir);
if SelectDirectory('Select A Directory', TheRootDir, TheDirectory, false) then
DirectoryComboBox.Text:= TheDirectory;
Index: ideprocs.pp
===================================================================
RCS file: /FPC/CVS/projects/lazarus/ideprocs.pp,v
retrieving revision 1.89
diff -u -r1.89 ideprocs.pp
--- ideprocs.pp 1 Aug 2003 09:44:51 -0000 1.89
+++ ideprocs.pp 2 Aug 2003 16:35:45 -0000
@@ -2100,19 +2100,23 @@
MaskList.Free;
end;//try-finally
//If selected then Look for and search subdirectories
- if (recursive) and (SysUtils.FindFirst(TempDir
- +FindMask,faAnyFile,FileInfo)=0) then
- begin
- if ((faDirectory and FileInfo.Attr)>0) then
+ try
+ if (recursive) and (SysUtils.FindFirst(TempDir
+ +FindMask,faAnyFile,FileInfo)=0) then
begin
- repeat
- // check if special file
- if (FileInfo.Name='.') or (FileInfo.Name='..') then continue;
- FindMatchingTextFiles
- (FileList,TempDir + FileInfo.Name,mask,recursive);
- until SysUtils.FindNext(FileInfo)<>0;
+ if ((faDirectory and FileInfo.Attr)>0) then
+ begin
+ repeat
+ // check if special file
+ if (FileInfo.Name='.') or (FileInfo.Name='..') then continue;
+ FindMatchingTextFiles
+ (FileList,TempDir + FileInfo.Name,mask,recursive);
+ until SysUtils.FindNext(FileInfo)<>0;
+ end;//if
end;//if
- end;//if
+ finally
+ SysUtils.FindClose(FileInfo);
+ end;//try-finally
end;//if
end;//FindMatchingFiles
Index: lcl/dirsel.pas
===================================================================
RCS file: /FPC/CVS/projects/lazarus/lcl/dirsel.pas,v
retrieving revision 1.2
diff -u -r1.2 dirsel.pas
--- lcl/dirsel.pas 2 Aug 2003 01:07:39 -0000 1.2
+++ lcl/dirsel.pas 2 Aug 2003 16:35:45 -0000
@@ -90,13 +90,12 @@
Result:= False;
if Dir <> '' then
begin
+ FCurrentDir:= Dir;
+ FileCtrl.AppendPathDelim(FCurrentDir);
i:= length(Dir);
- if Dir[i] = PathDelim then
- FCurrentDir:= Dir + FindMask
- else
- FCurrentDir:= Dir + PathDelim + FindMask;
+ FCurrentDir:= Dir + FindMask;
Try
- if SysUtils.FindFirst(FCurrentDir, faAnyFile,FileInfo)=0 then
+ if SysUtils.FindFirst(FCurrentDir, (faAnyFile),FileInfo)=0 then
begin
repeat
// check if special file
@@ -127,11 +126,10 @@
begin
if Dir <> '' then
begin
- i:= length(Dir);
- if Dir[i] = PathDelim then
- FCurrentDir:= Dir + FindMask
- else
- FCurrentDir:= Dir + PathDelim + FindMask;
+ FCurrentDir:= Dir;
+ FileCtrl.AppendPathDelim(FCurrentDir);
+ i:= length(FCurrentDir);
+ FCurrentDir:= Dir + FindMask;
Try
if SysUtils.FindFirst(FCurrentDir, faAnyFile,FileInfo)=0 then
begin
More information about the Lazarus
mailing list