Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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...
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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.
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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 |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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 |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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:
[/edit]
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; |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Hallo,
Delphi-Quellcode:
Woher hast du denn das and not ??
if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then
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 |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Das hatte ich in #43 schon :mrgreen:
[edit] and not entfernt ein bestimmtes Bit, das ist schon richtig ;) [/edit] |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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:
was habt Ihr gegen
if DirectoryExists(path) then
GetAllFilesInDirectorys(path, ll,true) else showmessage('falsche Pfadangabe:'+path);
Delphi-Quellcode:
ist das nicht das gleiche wir fahidden or fasystem or faarchive.....(ohne faDirectory)
and not faDirectory
oder eben faAnyfile mit not(faDirectory) maskiert. oder hab ich da was falsch in Erinnerung? Gruß K-H Edith: Tippfehler |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
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).
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Das liegt am übergebenen Pfad!
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 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