Avatar billede compilos Nybegynder
22. april 2001 - 16:23 Der er 10 kommentarer og
2 løsninger

\'Search\'

Jeg skal f.eks, på C-drevet læse alle filernes navne. F.eks lige som når man søger læser den alle filnavnene. Hvordan gør jeg det nemmest
Avatar billede makse Nybegynder
22. april 2001 - 16:24 #1
Avatar billede martinlind Nybegynder
22. april 2001 - 17:05 #2
Sådan :

procedure ScanFiles( const aPath : String; Subs : Boolean; const L : TStrings );
VAR
  S  : TSearchRec;
  CPath : String;
begin
  ChDir(aPath);
  GetDir(0,CPath);

  if FindFirst(IncludeTrailingBackslash(CPath)+\'*.*\',faANYFILE,S) = 0 then
  repeat
      if ( S.Attr and faSysFile = 0 ) and ( S.Attr and faDIRECTORY = 0 ) and
        ( S.Attr and faVolumeID = 0 ) and ( S.Name[1] <> \'.\' ) and ( S.Name[1] <> \'..\' ) then
      begin
        L.Add(IncludeTrailingBackslash(CPath)+S.FindData.cFileName);
      end;
  until FindNext(S) <> 0;
  FindClose(S);

  if Subs and ( FindFirst(\'*.*\',faDIRECTORY,S) = 0 ) then
  repeat
      if ( S.Attr and faDIRECTORY <> 0 ) and ( S.Name[1] <> \'.\' ) and ( S.Name[1] <> \'..\' ) then
      begin
        ScanFiles(IncludeTrailingBackslash(CPath)+S.Name,Subs,L);
        ChDir(\'..\');
      end;
  until FindNext(S) <> 0;
  FindClose(S);
end;

/Martin
Avatar billede compilos Nybegynder
22. april 2001 - 17:41 #3
Kan ikke umiddelbart kompilere koden.
Brokker sig over -
[Error] Unit1.pas(70): Undeclared identifier: \'IncludeTrailingBackslash\'
Avatar billede delphidaner Nybegynder
22. april 2001 - 18:41 #4
compilos << Det er fordi du ikke har tilføjet den unit til din uses, som indeholder IncludeTrailingBackslash. Jeg mener vistnok at den ligger i SysUtils, men ellers prøv dig frem med de brugte units. Den ligger der et eller andet sted.
Avatar billede borrisholt Novice
23. april 2001 - 07:33 #5
http://Borrisholt.com under File IO, finder du er færdigt eksempel du kan downloade ....

Jens B
Avatar billede martinlind Nybegynder
23. april 2001 - 10:24 #6
Inclu.... er en std Delphi function stil dig på den og tryk F1 så kan du se hvor den hører hjemme
Avatar billede martinlind Nybegynder
23. april 2001 - 10:25 #7
Delphidaner >> Det er rigtig det er SysUtils den ligger i.

/Martin
Avatar billede compilos Nybegynder
23. april 2001 - 17:54 #8
Jeg fatter heller ikke en skid.

Jeg kunne godt tænke mig hvor f.eks. hele c:\\ og alle filerne med stierne blev skrev i et memo-felt.
`Jeg mener komplet kode - derfor NU 300 point\'
Avatar billede borrisholt Novice
24. april 2001 - 06:42 #9
compilos>> Du skal bruge Unit2 fra ThreadSearch projektet fundet på http://borrisholt.com.

Så sakal du lave dig en form med en knap og en Memo felt. Så \"skriver\" du det følgende ....

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Unit2,
  StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    Procedure FileFound(FileName : TFileName; Attr: Integer);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

Procedure TForm1.FileFound(FileName : TFileName; Attr: Integer);
begin
  Memo1.Lines.Add(FileName);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  RecurseDirs : TRecurseDirs;
begin
  RecurseDirs := TRecurseDirs.Create;

  with RecurseDirs do
  begin
    Path :=\'c:\\\';
    RecurseDir := false;
    OnFileFound := FileFound;
    Start;
  end;

end;

end.


Hvis det ikke er tilstrækkeligt så må du lige sende mig en mail : Jens@Borrisholt.com

Jens B
Avatar billede martinlind Nybegynder
24. april 2001 - 09:46 #10
Ja i må meget undskylde men hvor svært kan det være :
-------------------------------------

procedure ScanFiles( const aPath : String; Subs : Boolean; const L : TStrings );
VAR
  S  : TSearchRec;
  CPath : String;
begin
  ChDir(aPath);
  GetDir(0,CPath);

  if FindFirst(IncludeTrailingBackslash(CPath)+\'*.*\',faANYFILE,S) = 0 then
  repeat
      if ( S.Attr and faSysFile = 0 ) and ( S.Attr and faDIRECTORY = 0 ) and
        ( S.Attr and faVolumeID = 0 ) and ( S.Name[1] <> \'.\' ) and ( S.Name[1] <> \'..\' ) then
      begin
        L.Add(IncludeTrailingBackslash(CPath)+S.FindData.cFileName);
      end;
  until FindNext(S) <> 0;
  FindClose(S);

  if Subs and ( FindFirst(\'*.*\',faDIRECTORY,S) = 0 ) then
  repeat
      if ( S.Attr and faDIRECTORY <> 0 ) and ( S.Name[1] <> \'.\' ) and ( S.Name[1] <> \'..\' ) then
      begin
        ScanFiles(IncludeTrailingBackslash(CPath)+S.Name,Subs,L);
        ChDir(\'..\');
      end;
  until FindNext(S) <> 0;
  FindClose(S);
end;

Procedure TForm1.Button1.Click( Sender : TObject );
begin
  ScanFiles(\'C:\\\',TRUE,Memo1.Lines); 
end;

-------------------------------
Så nemt er det...

/Martin



Avatar billede martinlind Nybegynder
24. april 2001 - 09:49 #11
Hvis du stadig ikke kan få det til at virke så drop en mailadr. så sender jeg noget kode til dig
Avatar billede compilos Nybegynder
24. juli 2001 - 00:08 #12
Jeg har ikke været helt tilfredes med svarene - da de ikke er helt rigtige for mig.
Jeg bruger delphi 4, og der tror jeg ikke rigtig funktionen eller hvad det nu er eksistere - IncludeTrailingBackslash.
Lad det ligge - jeg giver jer begge point da i altid er hurtige med et svar.

Og ellers tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester