Problem mit Datei Attributen

30/07/2009 - 08:58 von René Nüssli | Report spam
Hallo zusammen,

es werden Dateien auf einem komprimierten Laufwerk abgelegt und die
Attribute vbArchive + vbReadOnly gesetzt.
Dies ist auch kein Problem. Ich sehe sie "ARC". (C = compressed)
Von Zeit zu Zeit werden diese Dateien auf ein anderes Laufwerk im Netz wo
nicht komprimiert ist verschoben.
Mit fHnd = FindFirstFile(Path & "*.*", fd32) usw. durchsuchen wir das
Verzeichnis um die entsprechenden Dateien abzulegen.
Wàhrend des Verschiebens versuchen wir die original Attribute die wir
erhalten haben, wieder zu setzen

SetAttr OG & to_move, fd32.dwFileAttributes

Bei den verschobenen Dateien steht aber nur das Archive Bit.
Die erhaltenen Attribute (dwFileAttributes) sind "2081". Extrahiere ich 2048
davon, so erhalte ich meine beiden Attribute für A + R
Diese werden aber so nicht übernommen.
Machen wir das Gleiche von einem nicht komprimierten Laufwerk, so làuft
alles einwandfrei.

Wir haben uns nun so geholfen, dass wir die Attribute selber setzen.
SetAttr OG & to_move, vbArchive + vbReadOnly
Dies sollte aber nicht die Regel sein, denn wenn andere Attribute gesetzt
sein sollten, so würden diese nicht übernommen.

Unter Google habe ich diesbezüglich nichts gefunden.
Hat jemand von Euch dieses Problem auch schon gehabt?

Machen wir hier einen Fehler, oder ist dies ein Fehler von ?? (Windows oder
VB)

Deklaration:
Public Type WIN32_FIND_DATA
dwFileAttributes As Long

Konfiguration:
Windows XP SP3
VB6 SP5

Danke für Eure Antworten diesbezüglich
René
 

Lesen sie die antworten

#1 Thorsten Albers
30/07/2009 - 14:02 | Warnen spam
René Nüssli schrieb im Beitrag
...
es werden Dateien auf einem komprimierten Laufwerk abgelegt und die
Attribute vbArchive + vbReadOnly gesetzt.



Zunàchst einmal: Dateiattribute sind Bit-Werte. D.h. um einen Wert mit
verschiedene Dateiattributen zu erhalten, sollten die Bit-Werte für die
jeweiligen Dateiattribute mit dem bitweisen Verknüpfungsoperator Or
kombiniert und nicht addiert werden.

SetAttr OG & to_move, fd32.dwFileAttributes



'SetAttr' von VB ist keine gute Wahl, um in modernen Windows-Versionen
Dateiattribute zu setzen, da diese Funktion nur die von VB vordefinierten
Dateiattribute kennt und alle anderen ignoriert. Nimm stattdessen
SetFileAttributes() des Windows-API!

Bei den verschobenen Dateien steht aber nur das Archive Bit.
Die erhaltenen Attribute (dwFileAttributes) sind "2081". Extrahiere ich


2048
davon, so erhalte ich meine beiden Attribute für A + R
Diese werden aber so nicht übernommen.
Machen wir das Gleiche von einem nicht komprimierten Laufwerk, so làuft
alles einwandfrei.



Das ist alles etwas unklar:
- Wie verschiebt Ihr die Dateien?
- Was heißt bei Euch 'extrahieren', wenn es um Dateiattribute geht?

Ein bischen mehr Code wàre auch hilfreich...

Thorsten Albers

albers (a) uni-freiburg.de

Ähnliche fragen