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 5 von 8   « Erste     345 67     Letzte »    
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#41

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:49
Zeig doch einmal die ganze aufrufende Methode, nicht nur Häppchen davon.
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
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#42

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:53
Hallo,

Breakpoint auf

List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindDat a.nFileSizeHigh)+'*'
+IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTi me));

und Laufenlassen.


Hast du mal c:\test wie im Bsp. von DeddyH angelegt
und ein paar Dateien reingepackt.

Du verschweigst uns den Code, der nach dem Aufruf kommt,

Vielleicht steht dort ja auch ein List.Clear



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#43

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:00
Ich hab die Klassenmethode jetzt mal auf das Notwendigste gekürzt, auch wenn das vermutlich nicht fehlerverursachend war:
Delphi-Quellcode:
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);

    procedure ScanDir(const Directory: string);
    var SR : TSearchRec;
    begin
      if FindFirst(Directory+'*.*',faAnyFile,SR) = 0 then
      begin
        try
          repeat
            if (SR.Attr and faDirectory) = faDirectory then
            begin
              if (SR.Name <> '.') and (SR.Name <> '..') then
                ScanDir(IncludeTrailingPathDelimiter(Directory+SR.Name));
            end
            else
            begin
              List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindData.nFileSizeHigh)+'*'
                     +IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTime));
            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;
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
 
#44

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:02
Der Code ist ziemlich lang, hab noch mal drüber geguckt und es ist kein List.Clear drin ^^ aber was ich rausgefunden habe ist, dass er nicht einmal was in die Liste schreibt, so wie ich es die ganze Zeit schon vermutet habe.

Delphi-Quellcode:
var LastAccess : Array of string;
var List : TStringList;
var Path : string;
var i : Integer;
begin
  List := TStringList.Create;
  Main.UniConnection1.Connect;
  if Main.UniConnection1.Connected = True then
  begin
    Main.UniQuery1.SQL.Clear;
    Main.UniQuery1.SQL.Add('SELECT Pfad FROM tblPfad;');
    Main.UniQuery1.Execute;
    Path := Main.UniQuery1.Fields[0].Value;
  end;
  TDataWork.GetAllFilesInDirectorys(Path,List,true);
  setLength(LastAccess,List.Count-1);
  for i := 0 to List.Count-1 do
  begin
    LastAccess[i] := TDataWork.GetLastAccesstime(List.Strings[i]);
  end;
  FreeAndNil(List);
Hab mich mal aufs wesentliche beschränkt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#45

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:15
Wie ist es so?
Delphi-Quellcode:
var LastAccess : Array of string;
    List : TStringList;
    Path : string;
    i : Integer;
begin
  Path := '';
  try
    fMain.UniConnection1.Connect;
  except
    MessageBox(0,'Datenbankverbindung fehlgeschlagen!','Fehler',MB_ICONWARNING);
  end;
  if fMain.UniConnection1.Connected{ = True} then
  begin
    fMain.UniQuery1.SQL.Text := 'SELECT Pfad FROM tblPfad';
    fMain.UniQuery1.{Execute;}Open;
    Path := fMain.UniQuery1.Fields[0].Value;
    fMain.UniQuery1.Close;
  end;
  if Path <> 'then
    begin
      List := TStringList.Create;
      try
        TDataWork.GetAllFilesInDirectorys(Path,List,true);
        setLength(LastAccess,List.Count{-1});
        for i := 0 to List.Count-1 do
        begin
          LastAccess[i] := TDataWork.GetLastAccesstime(List{.Strings}[i]);
        end;
      finally
        FreeAndNil(List);
      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
 
#46

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:26
Ich begreifs einfach nicht, selbst wenn ich den Pfad fest in den Code schreibe funktioniert es nicht. die Liste bleibt leer und ich bekomme bei dem Aufruf von List.Count einen Fehler.

Ich bin am verzweifeln...

Danke noch mal für eure Hilfe!!

Ich hoff mal ich bekomm das mit eurer Hilfe hin!

Edit: Ich hab jetzt mal spasseshalber ein Memo drauf gelegt und dem List zugewiesen, ratet mal was passiert....... es bleibt leer

Gruß
AnyKey
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#47

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:29
Zitat von AnyKey:
ich bekomme bei dem Aufruf von List.Count einen Fehler.
Das ist in der Tat bemerkenswert. Jetzt nimmst Du Dir mal die komplette Routine (ungekürzt), packst sie in eine Textdatei und hängst sie hier an, vielleicht sieht man dann, was da schiefgeht.
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
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#48

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:34
Hallo,

Zitat:
die Liste bleibt leer und ich bekomme bei dem Aufruf von List.Count einen Fehler
Ist ja interessant, dass du das jetzt erst sagst ...
Ist die Fehlermeldung geheim oder warum sagst du sie uns nicht ?

Steht die vielleicht irgendwo ein List.Free ?;


*auf die Textdatei wart*


Heiko
Heiko
  Mit Zitat antworten Zitat
AnyKey

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:37
Der Fehler sagt lediglich 'Fehler bei Bereichsprüfung' und er kommt sobald ich dem Array List.Count-1 zuweisen will, was ja nicht gehen kann, da List.Count = 0 ist, obwohl es das ja nicht sein dürfte wenn ich die liste gefüllt habe...

Edit: wie schon gesagt, die Proceduren liegen in zwei verschiedenen Units, die GetAllFilesInDirectory in einer Klasse und der Button zum auslösen in einem Fromular.
Angehängte Dateien
Dateityp: txt routine_104.txt (5,6 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#50

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:42
Wieso die Liste leer bleibt, hab ich nicht erkennen können, aber das SetLength ist so auf jeden Fall falsch. Wieso List.Count - 1 und nicht List.Count?
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
Antwort Antwort
Seite 5 von 8   « Erste     345 67     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 06:35 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