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 6 von 8   « Erste     456 78      
AnyKey

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:44
Weil ein Array doch immer mit 0 beginnt oder nicht? Naja ist ja egal, hab jetzt mal das -1 weggelassen, jetzt funktioniert wenigstens meine Anwendung wieder, aber die Liste ist sicherlich immer noch leer...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:46
Das Array beginnt bei 0, die Liste auch. Übrigens bekommst Du ein Speicherleck, wenn die DB-Verbindung fehlschlägt, da die Liste dann nicht wieder freigegeben wird.
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.270 Beiträge
 
Delphi 10.4 Sydney
 
#53

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:47
Hallo,

der Code sieht OK aus.

Ausser
LastAccess: array of String

Warum die Leute sowas statt einer StringList nehmen, ist mir ein Rätsel.


Die Frage ist, welchen Wert hat Pfad.


Heiko
Heiko
  Mit Zitat antworten Zitat
AnyKey

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:51
Danke, werd ich ändern, hatte ich nicht drüber nachgedacht.
Also es funktioniert immer noch nicht, hab noch mal einen Breakpoint an der stelle in der Funktion gesetzt in der ich die Liste befülle, aber da springt er nie rein, keine ahnung warum nicht. Dumme Frage: Daran das die proceduren sich in zwei verschiedenen Units befinden und ich die StringList in die Klasse in der Procedure als List: TStrings übergeb kanns nicht liegen oder?

Pfad hat wenn ich debugge in der Aufrufenden und in der GetFilesinDirectory Procedure einen Wert wie: 'C:\Dokumente und Einstellungen\Eigene Dateien\Beispiele'

Ich hab echt keinen plan mehr

Gruß
AnyKey
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 14:55
Solange die Unit mit der Klasse eingebunden ist, kann ja nix schiefgehen (sonst müsste der Compiler aber auch meckern).

[edit] Kann es sein, dass da ein "end;" zuviel ist? Ich hab die Datei in PSPad offen und kann da eins nicht so recht zuordnen. Versuch es mal mit diesen Änderungen (else-Zweige hab ich jetzt einmal weggelassen):
Delphi-Quellcode:
procedure TfMDIChild.FormCreate(Sender: TObject);
var LastAccess : Array of string;
    Benutzer : string;
    List : TStringList;
    Pfad : string;
    i : Integer;
begin
  Pfad := '';
  Benutzer := TWindowsFunctions.GetUser;
  // 1. Datenbankverbindung herstellen, bwz. DB erstellen falls noch nicht existiert
  try
    fMain.UniConnection1.Connect;
  except
    MessageBox(0,'Datenbankverbindung fehlgeschlagen!','Fehler',MB_ICONWARNING);
  end;
  // 2. Wenn TypeFlag = Archiv dann Child mit VirtualExplorerTreeView erstellen
  if fMain.TypeFlag = rsArchiv then
  begin
    if fMain.UniConnection1.Connected then
    begin
      fMain.UniQuery1.SQL.Text := 'SELECT QZPfad FROM tblQuelleZiel WHERE QZQuelle = 1 AND QZBenutzer = :benutzer';
      fMain.UniQuery1.ParamByName('benutzer').Value := Benutzer;
      fMain.UniQuery1.Execute;
      Pfad := fMain.UniQuery1.FieldByName('QZPfad').Value;
    end;
    VET := TVirtualExplorerTreeview.Create(Self);
    VET.Name := 'VET';
    VET.Parent := Self;
    VET.Active := True;
    VET.Align := alClient;
    VET.CheckImageKind := ckDarkCheck;
    VET.RootFolder := rfCustom;
    VET.RootFolderCustomPath := Pfad;
    VET.TreeOptions.MiscOptions := [toAcceptOLEDrop, toCheckSupport, toEditable,
                                    toToggleOnDblClick];
    VET.OnInitNode := VETInitNode;
// end;
  // 3. Archivierungsprüfung!!
    if Pfad <> 'then
    begin
      List := TStringList.Create;
      try
        TDataWork.GetAllFilesInDirectorys(Pfad,List,true);
    // 4. LastAccessTime prüfen:
        setLength(LastAccess,List.Count);
        for i := 0 to List.Count-1 do
        begin
          LastAccess[i] := TDataWork.GetLastAccesstime(List.Strings[i]);
        end;
      finally
        FreeAndNil(List);
      end;
    end;
  // 5. Daten in die Datenbank schreiben
    if fMain.UniConnection1.Connected then
    begin

    end;
  // 6. die archivierbaren Ordner im VirtualTreeView markieren:
  // hierfür InitNode aufrufen dort wird das dann gemacht, dort muss
  // dann auch die Prüfung auf die DB gemacht werden, ob archivierbar oder nicht
  end;
end;
[/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
hoika

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:02
Hallo,

if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then Woher hast du denn das and not ??
Das wird per or zusammengefasst

Nimm das mal komplette raus und rpprüfe in der repeat until,
ob die jeweiliges "Datei" ein Verzeichnis ist.

Delphi-Quellcode:
if if (SR.Attr and faDirectory) = faDirectory then
begin
  List.Add(XXX)
end;

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:04
Das hatte ich in #43 schon

[edit] and not entfernt ein bestimmtes Bit, das ist schon richtig [/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
Benutzerbild von p80286
p80286

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:24
Ich hab mal ein wenig gespielt.
Hoikas Frage nach dem Pfad war wohl richtig, da wenn der Pfad nicht vorhanden ist, ist auch die Liste leer!

Delphi-Quellcode:
if DirectoryExists(path) then
  GetAllFilesInDirectorys(path, ll,true)
else
  showmessage('falsche Pfadangabe:'+path);
was habt Ihr gegen
and not faDirectory ist das nicht das gleiche wir fahidden or fasystem or faarchive.....(ohne faDirectory)
oder eben faAnyfile mit not(faDirectory) maskiert.
oder hab ich da was falsch in Erinnerung?

Gruß
K-H

Edith:
Tippfehler
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:27
Wer hat denn etwas gegen das and not? Mich persönlich hat nur gestört, dass alles 2 mal abgeklappert wird, was man auch mit einem Mal erledigen kann. Und angeblich funktioniert der Code ja mit einer Listbox, mit einer Stringliste aber nicht (was ich mir allerdings nicht so richtig vorstellen kann).
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
 
#60

Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen

  Alt 16. Apr 2010, 15:36
Das liegt am übergebenen Pfad!
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 8   « Erste     456 78      


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 17:07 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