17. december 2002 - 06:35Der 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
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.
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
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;
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
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...
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....
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;
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.