Entwickler-Ecke

Dateizugriff - Stapelverarbeitung


bfelix - Sa 05.03.11 21:34
Titel: Stapelverarbeitung
Hallo Community,
ich würde gerne mit einer Software, die Bilder bearbeitet, einen kompletten Ordner durcharbeiten. Folgendes ist ziemlich klar:

Delphi-Quelltext
1:
2:
3:
for i:= 1 to *Anzahl Dateien* do begin
bearbeiten(*Name der Datei*);
end;

Dabei ist bearbeiten eine Prozedur, die mit dem Parameter filename o.ä. die Datei bearbeitet
Allerdings weiß ich nicht, und habe auch auf unerklärliche Weise auf Google und im Forum nichts gefunden, wie ich zuerst die Menge der Dateien und dann den Dateinamen von einzelnen Dateien herausbekomme. Kann mir irgendwer sagen, wie ich das machen kann?

mfg BFelix


bummi - Sa 05.03.11 21:58

suchst Du sowas?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
type
TFileINfo=Record
  FileNameRel:String;
  FileName:String;
  FilePathRel:String;
  FileNameOnly:String;
  FileSizeKB:Double;
  FileDate:TDateTime;
  RootPath:Boolean;
End;
TFileInfoArray=Array of TFileINfo;




Procedure ReadDir(var Result:TFileInfoArray ;Pfad, WildCard: String;Recursiv:Boolean=true;RootPath:Boolean=false);
Var SR: Sysutils.TSearchRec;
    Erg: Integer;
    RelDir : String;
Begin
 if length(Pfad)=0 then Pfad:='\';
 If Pfad[length(Pfad)] <> '\' Then Pfad := Pfad + '\';
 RelDir := ExtractFilePath(WildCard);
 WildCard := ExtractFileName(WildCard);
 Erg := FindFirst(Pfad+RelDir+'*.*', faDirectory, SR);
 While Erg = 0 Do
 Begin
   If (SR.attr And faDirectory) <> 0 Then
    If SR.Name[1] <> '.' Then
     if Recursiv then ReadDir(Result,Pfad, RelDir+SR.Name+'\'+WildCard);
  Erg := FindNext(SR);
 End;
 Erg := FindFirst(Pfad+RelDir+WildCard, $27, SR);
 {Das Attribut $27 bedeutet
  alle echten Dateien}

 While Erg = 0 Do
 Begin
  SetLength(Result,High(Result) + 2);
  Result[High(Result)].FileNameOnly:= SR.Name;
  Result[High(Result)].FileNameRel := RelDir+SR.Name;
  Result[High(Result)].FileName    := Pfad+RelDir+SR.Name;
  Result[High(Result)].FilePathRel := RemoBackSlash(RelDir);
  Result[High(Result)].FileDate    := FileDateToDateTime(SR.Time);
  Result[High(Result)].RootPath    := RootPath;

  Result[High(Result)].FileSizeKB  := sr.Size / 1024;
  Erg := FindNext(SR);
 End;
 sysutils.FindClose(SR);
End;


jaenicke - Sa 05.03.11 22:10

Dazu haben wir natürlich auch etwas in der Library:
http://www.delphi-library.de/topic_nach+Dateien+suchen_1107.html
Aber da schaut ja irgendwie kaum wer nach... :roll: