[Botta&Risposta] Settare gli attributi ai file

Tutorial, videotutorials ed esempi creati da noi
Rispondi
Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

[Botta&Risposta] Settare gli attributi ai file

Messaggio da maz85 »

Tramite GM possiamo settare gli attributi dei file.
Per fare ciò bisogna usare un programma esterno presente su windows che setta gli attributi e si chiama attrib.exe.

Avvieremo il programma con

Codice: Seleziona tutto

execute_program(...);
utilizzando la sua sintassi in questa forma generale con i suoi argomenti:
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename]
Questi sono gli attributi da usare assieme agli operatori + e - da passare come argomenti al programma:
+ Setta un attributo.
- Toglie l'attributo.
R Read-only.
A File d'archivio.
S File di sistema.
H File nascosto.
Quindi useremo execute_program in questo modo:

Codice: Seleziona tutto

execute_program(environment_get_variable("windir")+"\system32\attrib.exe", "+h c:\ciao.txt",0);
per rendere il file ciao.txt invisibile.

La funzione environment_get_variable restituisce la posizione della cartella di windows sottoforma di stringa.
Utile per reperire il programma attrib.exe (per esempio se uno ha windows su F: o altre unità).

Rendiamo la funzione più efficace creando uno script e passando questi argomenti:
argoment0 : il file corredato di path a cui dobbiamo cambiare attributi
argument1 : il comando attributo da settare (è una stringa) per esempio >>> "+s"

Codice: Seleziona tutto

{
//Usiamo ATTRIB
//argument0 = file con percorso es.: c:\dir\file.ext
//argument1 = stringa contenente + o - per settare o togliere e 
//seguita da una lettera che identifica l'attributo

if(file_exists(argument0)){
    execute_program(environment_get_variable("windir")+'\system32\attrib.exe',argument1+' "'+argument0+'"',0);
}else{
    show_message("Non esiste il file!");
}
}
Esempio richiamo script:

Codice: Seleziona tutto

cambia_attributo(working_directory+"\musiccube.mid","+r"); //rendo di sola lettura il file
Attenzione:
argument0 viene inviato come stringa ovvero è seguito e preceduto da i doppi apici (") poichè se il path ha degli spazi il file non viene trovato. Su GM la stringa è contenuta invece tra ' per differenziare.

Altro:
Per leggere gli attributi potete invece utilizzare la funzione GM file_attributes(fname,attr)
Queste cose vanno solo se non siete in modalità sicura su GM.

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [Botta&Risposta] Settare gli attributi ai file

Messaggio da Jak »

:fapensare: Interessante anche se a me non servirà mai cambiare gli attributi dei file tramite gm.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: [Botta&Risposta] Settare gli attributi ai file

Messaggio da cp94 »

mai dire mai :baron:
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: [Botta&Risposta] Settare gli attributi ai file

Messaggio da Jak »

cp94 ha scritto:mai dire mai :baron:
Se in futuro mi servirà sta roba ormai mi sarò dimenticato di questo topic!
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 53 ospiti