Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Attributi File
Forum - C/C++ - Attributi File

Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 21:27
Giovedì, 28/10/2010
Salve a tutti ho un problema nel settare gli attributi file con le API di Windows o meglio il primo attributo riesco a settarlo il secondo o il terzo no ..
mi spiego meglio se io uso il seguente codice:
Codice sorgente - presumibilmente Plain Text

  1. SetFileAttributes(nomefile,FILE_ATTRIBUTE_HIDDEN)


per far diventare un file nascosto me lo nasconde come è giusto che sia ma se poi uso:
Codice sorgente - presumibilmente Plain Text

  1. SetFileAttributes(nomefile,FILE_ATTRIBUTE_READONLY)


torna un file visibile e si setta su readonly perchè non rimane nascosto ?
come posso fare ?

Grazie

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 22:39
Giovedì, 28/10/2010

rispondo intuitivamente, perchè il secondo parametro è la mask di TUTTI i bit degli attributi, quindi se vuoi un file sia hidden che readonly devi fare

SetFileAttributes(nomefile,FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY)


PM
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 15:16
Venerdì, 29/10/2010
Vero ora funziona grazie :k:
Senti ma c'è anche un modo per farlo in due volte diverse richiamando due volte il comando senza che perdo l'attributo che magari è gia presente ?

PM
Avatar
GuglielmoS (Ex-Member)
Pro


Messaggi: 114
Iscritto: 27/11/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 15:38
Venerdì, 29/10/2010
Testo quotato

Postato originariamente da jaco94++:

Vero ora funziona grazie :k:
Senti ma c'è anche un modo per farlo in due volte diverse richiamando due volte il comando senza che perdo l'attributo che magari è gia presente ?


Prova ad utilizzare una variabile che tiene conto dei FLAG correnti, così ti basta operare su di essa.
Esempio:
Codice sorgente - presumibilmente Plain Text

  1. flags = FILE_ATTRIBUTE_HIDDEN;
  2. SetFileAttributes(nomefile,flags);
  3.  
  4. flags |= FILE_ATTRIBUTE_READONLY;
  5. SetFileAttributes(nomefile,flags);


PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 17:07
Venerdì, 29/10/2010
Testo quotato

Postato originariamente da jaco94++:

Vero ora funziona grazie :k:
Senti ma c'è anche un modo per farlo in due volte diverse richiamando due volte il comando senza che perdo l'attributo che magari è gia presente ?



beh, anche qui vado ad occhio: ci sarà sicuramente un'api chiamata GetFileAttributes che ti permette di ottenere la mask dei bit degli attributi, per sapere se un attributo è flaggato basta fare if (mask & ATTRIB), da li parti per implementare il toggle.

PM