AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Rekursives durchsuchen und Letzten Dateizugriff auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Rekursives durchsuchen und Letzten Dateizugriff auslesen

Ein Thema von AnyKey · begonnen am 15. Apr 2010 · letzter Beitrag vom 17. Apr 2010
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#31

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 12:59
Danke für die vielen Antworten ich habe das von DeddyH mal kopiert und bei mir eingefügt, die Liste bleibt allerdings immer noch leer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#32

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:01
Dann zeig doch nochmal den aktuellen Code (Methode und Aufruf komplett).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#33

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:14
@hoika
das seltsame
Delphi-Quellcode:
  if Directory[Length(Directory)] <> '\then
    begin
      Directory := Directory+'\';
    end;
    Directory := Directory+'\';
    ScanDir(Directory);
ist ja immer noch da, der fehlende Backslash könnte es also nicht sein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#34

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:19
Die Procedure:

Delphi-Quellcode:
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string);
var Mask : string;
var SR : TSearchRec;
begin
  Mask := '*.*';
  if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then
  begin
    try
      repeat
        List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindData.nFileSizeHigh)+'*'
                 +IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTime));
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
  if FindFirst(Directory+Mask,faAnyFile,SR) = 0 then
  begin
    try
      repeat
        if ((SR.Attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then
        begin
          ScanDir(Directory+SR.Name+'\');
        end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;
begin
  List.BeginUpdate;
  try
    if ClearList then
    begin
      List.Clear;
    end;
    Directory := trim(Directory);
    if Directory = 'then
    begin
      Exit;
    end;
    Directory := IncludeTrailingPathDelimiter(Directory);
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
und der Aufruf:
Delphi-Quellcode:
var List : TStringList;
List := TStringList.Create;
// Pfad kommt aus einer Datenbank Inhalt: 'C:\Dokumente und Einstellungen\Beispiel'
TDataWork.GetAllFilesInDirectorys(Pfad,List,true);
Hoffe das hilft euch weiter, wie gesagt ich habe das Gefüht das er die Liste garnicht füllt in der Procedure, zumindest wird das durch debugen nicht deutlich. Wenn ich die Procedure allerdings aufrufe und eine ListBox übergebe funktioniert das ganze einwandfrei...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#35

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:23
Bist Du mal mit F7 durchgesteppt? Werden dabei Zeilen übersprungen?

[edit] Jetzt bin ich neugierig geworden und hab das selbst ausprobiert (ein Button und ein Memo auf der Form):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List: TStringlist;
begin
  List := TStringlist.Create;
  try
    TDataWork.GetAllFilesInDirectorys('C:\Test',List,true);
    Memo1.Lines.Assign(List);
  finally
    List.Free;
  end;
end;
Funktioniert einwandfrei, das Memo wird befüllt. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#36

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:31
nein bin mit F8 durchgegangen, und ja er überspringt scheinbar immer die stelle an der eigentlich in die Liste geschrieben werden soll, das interessante ist aber dieser Aufruf funktioniert:

TDataWork.GetAllFilesInDirectorys(Edit1.Text,Listbox1.Items,True); hier bekommt man alles in der ListBox angezeigt. Ich blick nich mehr durch und es müsste so langsam mal funktionieren...

Edit: Sag ich ja, ListBox funktioniert auch, nur die Stringlist nicht ich brauch aber keine Anzeige sondern nur die Liste...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#37

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:34
Ich verwende da ja auch nur eine Stringliste, lasse diese befüllen und gebe sie dann im Memo aus. Klappt also, das muss irgendetwas anderes sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#38

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:35
hm... kannst du vielleicht mal deinen code posten, dann vergleich ich das noch mal mit meinem, vielleicht hab ich ja noch woanders einen fehler gemacht den ich übersehen habe...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#39

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:39
Auch wenn das dann zum x-ten Mal hier steht, mein kompletter implementation-Abschnitt:
Delphi-Quellcode:
implementation

{$R *.dfm}

type
  TDataWork = class
  public
    class procedure GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);static;
  end;

class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);

procedure ScanDir(const Directory: string);
var Mask : string;
    SR : TSearchRec;
begin
  Mask := '*.*';
  if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then
  begin
    try
      repeat
        List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindData.nFileSizeHigh)+'*'
                 +IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTime));
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
  if FindFirst(Directory+Mask,faAnyFile,SR) = 0 then
  begin
    try
      repeat
        if ((SR.Attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then
        begin
          ScanDir(Directory+SR.Name+'\');
        end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
    begin
      List.Clear;
    end;
    Directory := trim(Directory);
    if Directory = 'then
    begin
      Exit;
    end;
    Directory := IncludeTrailingPathDelimiter(Directory);
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var List: TStringlist;
begin
  List := TStringlist.Create;
  try
    TDataWork.GetAllFilesInDirectorys('C:\Test',List,true);
    Memo1.Lines.Assign(List);
  finally
    List.Free;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#40

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 13:46
Ich verstehs einfach nich, wenn ich mir List.Count ausgeben lass steht da 0 drin. Das kann doch nich daran liegen das die Procedure in einer Klasse ist und ich sie von außen aufrufe....... ich weiß nich mehr weiter...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz