Avatar billede anold Nybegynder
17. december 2002 - 06:35 Der er 14 kommentarer og
1 løsning

Print dir navne

Jeg har en  HD med en masse mapper, i de mapper er der igen en masse (under)mapper
er det ikke muligt at lave et program som gør at jeg kan printe navene ud på disse (under)mapper f.eks i Word
således at jeg får en pæn parpir liste skrevet ud
Avatar billede tlunde Nybegynder
17. december 2002 - 07:55 #1
Prøv at bruge dette program: www.webneeds.dk/folder.rar

Det kan bruges til at rippe alt hvad der ligger i en mappe, og så skrive det ud i en txt fil. så kan du jo bare kopiere det over i en word fil, hvis du gerne vil det.
Avatar billede hermandsen Juniormester
17. december 2002 - 07:59 #2
Hent denne:
http://www.pythia.dk/komponenter/download/TFileSearch.zip

Når den så kalder "OnDirectoryFound" smider du det bare ned i en TStringList eller en eller anden fil...

Resten burde være rimelig let! ;)

//hermandsen
Avatar billede anold Nybegynder
17. december 2002 - 08:25 #3
Hej tlunde
jeg har lige kigget på dit forslag
problemet med programmet du forslår er at det kun tager 1 dir af gangen
men jeg har 1 dir med en masse under dir (ca 30 gb) så derfor søger jeg et eller andet som kan skrive en komplet liste ud
Avatar billede anold Nybegynder
17. december 2002 - 08:27 #4
Hej hermandsen
nu har jeg hentet den komponent
men kan du ikke vise mig hvordan jeg skal bruge den for at få en komplet liste skrevet ud
Avatar billede hermandsen Juniormester
17. december 2002 - 09:22 #5
uses
  FileCtrl;

private
  sl: TStringList;

procedure TForm1.Button1Click(Sender: TObject);
var
  Dir: String;
begin
  if not SelectDirectory('', '', Dir) then Exit;
  Button1.Enabled := False;
  sl := TStringList.Create;
  with FileSearch1 do
  begin
    Filter := '*.*';
    Root := Dir;
    Recursiv := True;
    Execute;
  end;
end;

procedure TForm1.FileSearch1DirectoryFound(Sender: TObject; Directory: String);
begin
  sl.Add(Directory);
end;

procedure TForm1.FileSearch1FileSearchFinish(Sender: TObject; Breaked: Boolean);
var
  F: TextFile;
  I: Integer;
begin
  AssignPrn(F); //Så skal vi udskrive
  Rewrite(F);  //der gøres klar

  for I := 0 to sl.Count -1 do
    Writeln(sl.Strings[I]);  //Der udskrives

  System.CloseFile(F);  //Udskrift-filen lukkes

  sl.SaveToFile(ExtractFilePath(Application.ExeName) + 'mapper.txt');  //Vi gemmer de fundme mapper i en tekst fil.
  sl.Free;
end;
Avatar billede anold Nybegynder
17. december 2002 - 10:22 #6
Hej hermandsen
nu ser mit program sådan her ud :

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
//  private
  sl: TStringList;


  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var
  Dir: String;
begin
  if not SelectDirectory('', '', Dir) then Exit;
  Button1.Enabled := False;
  sl := TStringList.Create;
  with FileSearch1 do
  begin
    Filter := '*.*';
    Root := Dir;
    Recursiv := True;
    Execute;
  end;
end;

procedure TForm1.FileSearch1DirectoryFound(Sender: TObject; Directory: String);
begin
  sl.Add(Directory);
end;

procedure TForm1.FileSearch1FileSearchFinish(Sender: TObject; Breaked: Boolean);
var
  F: TextFile;
  I: Integer;
begin
  AssignPrn(F); //Så skal vi udskrive
  Rewrite(F);  //der gøres klar

  for I := 0 to sl.Count -1 do
    Writeln(sl.Strings[I]);  //Der udskrives

  System.CloseFile(F);  //Udskrift-filen lukkes

  sl.SaveToFile(ExtractFilePath(Application.ExeName) + 'mapper.txt');  //Vi gemmer de fundme mapper i en tekst fil.
  sl.Free;
end;

end.


men jeg får en fejl ved :

if not SelectDirectory('', '', Dir) then Exit;
  Button1.Enabled := False;
  sl := TStringList.Create;
  with FileSearch1 do
  begin

i linjen

with FileSearch1 do

kan du se hvad jeg mangler
Avatar billede hermandsen Juniormester
17. december 2002 - 10:26 #7
Du skal ligesom installere komponentet som du har hentet, smide det ind på formen og sætte de forskellige events i komponentet til det jeg har skrevet...
Avatar billede stoney Nybegynder
17. december 2002 - 11:15 #8
Hvad med den gode gamle DOS kommando TREE ?

Gem det i en fil og indlæs der fra.
EKS:
tree >mytree.txt

Stoney
Avatar billede hermandsen Juniormester
17. december 2002 - 12:07 #9
>>stoney
"Forkert kommando eller filnavn" ??
Avatar billede hermandsen Juniormester
17. december 2002 - 12:12 #10
Mener du ikke:
dir /s >text.txt
Avatar billede hermandsen Juniormester
17. december 2002 - 12:13 #11
Hmmm... Den her er bedre! ;)
dir /ad /s >text.txt
Avatar billede stoney Nybegynder
17. december 2002 - 12:34 #12
hermandsen>
Det virker fint hos mig.
Jeg kører XP

Stoney
Avatar billede hermandsen Juniormester
17. december 2002 - 14:49 #13
Hmm... Min 98 vil ikke... Ved ikke lige om vi kan kalde den en god gammel dos kommando så! ;)
Avatar billede loke-liscom Nybegynder
17. december 2002 - 16:29 #14
Her er den den programmeringsmessige korrekte måde at gøre det på. Jeg slutter af med at indsætte de data(mapper) den rekursive løkke har fundet i en memo. så kan du jo bare skrive "Memo1.Lines.SaveToFile('c:\bla.txt');" så er den jo gemt. What ever....

//klaus

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Folders : string;

implementation

{$R *.DFM}
procedure Rekur(Path : string);
var
  F : TSearchRec;
begin
  Folders := Folders + ExtractFilePath(Path)+#13#10;
  if FindFirst(Path,faAnyFile,F) = 0 then
  begin
    if (f.Attr and faDirectory = faDirectory) and (F.Name[1] <> '.') then
      Rekur(ExtractFilePath(Path)+F.Name+'\*.*');
    while FindNext(F) = 0 do
    begin
      if (f.Attr and faDirectory = faDirectory) and (F.Name[1] <> '.') then
        Rekur(ExtractFilePath(Path)+F.Name+'\*.*');
    end;
    FindClose(F)
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Folders := '';
  Rekur('c:\*.*');
  Memo1.Lines.add(Folders);
end;

end.
Avatar billede hermandsen Juniormester
17. december 2002 - 18:18 #15
>>loke-liscom
En Memo har sine begrænsninger! ;)
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