![]() |
Synchronisation von Ordnern
Hej, Delphianer!
Ein neuer Tag ist angebrochen und schon hab ich wieder eine neue Frage. Diesmal handelt es sich um ein Ordnersynchonisationsprogramm. Es läuft auch alles soweit, nur habe ich ein Problemchen. Und zwar kommt es vor, dass Ordner das Attribut "Archiv" haben. Folglich erkennt die Findfirst Funktion diesen Ordner nicht als Ordner an --> Der Ordner wird nicht in dem Synchronisationsverzeichnis angelegt, da es ja durch diese Eigenschaft kein richtiger Ordner mehr ist. Meine Frage ist nun, wie ich dem Programm sagen kann, dass es sich dabei doch um einen Ordner und kein Archiv handelt. (Eigenschaften der Ordner von Hand ändern ist keine Lösung) MfG Telekab. |
Re: Synchronisation von Ordnern
Abgesehen davon, dass das Attribut Archiv obsolet ist, erkennt er Ordner, die mit Archive gekennzeichnet sind bei mir trotzdem als Verzeichnis, solange sie das Directoryattribut haben.
|
Re: Synchronisation von Ordnern
Nun, in gewisser Weise erkennt er sie ja auch, aber irgendwie erstellt er sie nicht.
Ich habe folgendes gemacht. Zuerst sucht er nach einem Ordner über findfirst. Dann überprüft er in einer If-Clause, ob das gefundene Etwas ein Ordner ist (also file = fadirectory) und wenn es eines ist, so soll er es über createdirectory erstellen. Und eben Letzteres tut er nicht bei einem Ordner mit dem Archiv-Attribut. Wo liegt der Fehler? MfG Telekab. |
Re: Synchronisation von Ordnern
Du solltest nicht auf "file = faDirectory" prüfen. Wenn dort noch andere Attribute gesetzt sind, ergibt dieser Vergleich False.
Besser ist es, auf bestimmte Attribute mit AND zu prüfen.
Delphi-Quellcode:
FindResult := FindFirst(Dir + '*.szf', faAnyFile, SearchRec);
while FindResult = 0 do begin [..] Attr := ''; if (SearchRec.Attr and SysUtils.faReadOnly) <> 0 then // auch: ) = faReadOnly Attr := 'R'; if (SearchRec.Attr and faHidden) <> 0 then // auch: ) = faHidden Attr := Attr + 'H'; if (SearchRec.Attr and faSysFile) <> 0 then // auch: ) = faSysFile Attr := Attr + 'S'; if (SearchRec.Attr and faArchive) <> 0 then // auch: ) = faArchive Attr := Attr + 'A'; ListItem.SubItems.Add(Attr); FindResult := FindNext(SearchRec); end; FindClose(SearchRec);
Code:
mfg
Attribut, z.B. 11001101
AND fa... z.B. 01001000 Ergebnis: 01001000 Michael |
Re: Synchronisation von Ordnern
Hi
@sirius In welcher Quelle steht denn das? Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz