Source wurde al 15.07.2007 de el MMJ-Quellcodesammlung (Dietmar Horn) en el Babyklappe en XProfan.Com abgelegt:
Expediente: Dateiattribute el Archivos uno ganzen Verzeichnisses ändern
Programa: ChgFilAtr. Entwickelt bajo Profano 6.6 y Windows 95
Setzt oder löscht el Dateiattribute aller oder ausgewählter Archivos uno
Verzeichnisses. Das Attribut des Verzeichnisses se no verändert!
Unterverzeichnisse bleiben unverändert.
----------------------------------------------------------------------------------
Versión 1.0 25.11.2001. Das Programmbeispiel kann frei benutzt voluntad, para
Schäden kann no Haftung übernommen se.
Autor: Gerhard Putschalka
email: g.putschalka@web.de
homepage: http://members.telering.at/g.putschalka/index.html
----------------------------------------------------------------------------------
Declarar Pfad$,Anzahl%,Wert&,X%,_dlg%,Ende%,Abbr%,Name$,Id#,Texto#,BAlle%,Bal%,AlleKz%
Declarar ROSet%,RORes%,RONoc%,HiSet%,HiRes%,HiNoc%,ArSet%,ArRes%,ArNoc%,BOk%,BAbbr%,Box%
Proc Einleitung wähle Directorio. Pfad$ enthält danach el Pfad a el a
bearbeitenden Archivos, SPfad$ es Pfad para aktuellen Programa.
Declarar Zx$,SPfad$,Anz%
Let SPfad$=@GetDir$(@) sichere aktuellen Pfad
ClearList
Let Pfad$ = @ChooseDir$(Directorio wählen:) Lfwk:Pf1Pf2
Let Abbr% = 1
If (@Len(Pfad$) > 0)
Let Abbr% = 0
AddFiles *.*
übertrage el Einträge en una Multiselect Listbox, unterdrücke todos Verzeichnisse
Let Anz% = 0
Let Box% = control(LISTBOX,,$50B008C3,360,30,370,305,_dlg%,100,%HInstance)
@createtext(_dlg%,Archivos para Ändern auswählen,440,10,220,16)
Sinestar encargado (Anz% > %GetCount)
Let Zx$ = @ListBoxItem$(Anz%)
Casenote @Equ$(@Left$(Zx$,1),[) : @AddStrings(Box%,Zx$)
Inc Anz%
EndWhile
EndIf
Volver
ENDPROC
wähle todos Listboxeinträge de
Proc Wähle_alle
Declarar Y%
Let X% = 0
Let Y% = @GetCount(Box%)
@MessageBox(@Str$(@GetCount(Box%)),,32)
Mientras que (X% < Y%)
sendmessage (Box%,$0185,1,X%) Eintrag marca
Inc X%
EndWhile
Volver
ENDPROC
Proc Execute_Änderungen
Parámetros FilNam$
Asignar #1,FilNam$
AtrByt% = @GetFAttr(#1) lese Dateiattribut
Case @GetCheck(ROSet%) : AtrByt% = @SetBit(AtrByt%,0,1)
Case @GetCheck(RORes%) : AtrByt% = @SetBit(AtrByt%,0,0)
Case @GetCheck(HiSet%) : AtrByt% = @SetBit(AtrByt%,1,1)
Case @GetCheck(HiRes%) : AtrByt% = @SetBit(AtrByt%,1,0)
Case @GetCheck(ArSet%) : AtrByt% = @SetBit(AtrByt%,5,1)
Case @GetCheck(ArRes%) : AtrByt% = @SetBit(AtrByt%,5,0)
SetFAttr #1,AtrByt% ändere el Dateiattribut
Volver
ENDPROC
verarbeite Listboxliste y ändere el Dateiattribute el ausgewählten Eonträge
Proc Attribute_ändern
Declarar AtrByt%,Y&,Anzahl&
Dim Id#,1000 Kapazität 1000 reicht para 250 Archivos en el Directorio ggf. ändern!
Dim Texto#,256
Let X% = 0
let Anzahl& = sendmessage(Box%,$0190,0,0) Anzahl el Selektierungen
sendmessage(Box%,$0191,Anzahl&,ID#) El selektierten Einträge übernehmen
Sinestar encargado (X% = Anzahl&)
let Y& = long(ID#,mul(X%,4)) Nummer des Eintrages holen
sendmessage(Box%,$0189,Y&,Texto#) el Sel. Texto de el Liste holen
Let Name$ = Pfad$;@String$(Texto#,0)
Execute_Änderungen Name$
inc X%
EndWhile
Disponer Id#
Disponer Texto#
Volver
ENDPROC
Ändere el Dateiattribute de allen Listboxeinträge (Auswahlen haben no Bedeutung)
Proc Alle_ändern
Declarar Y%,AtrByt%
Let X% = 0
Let Y% = @GetCount(Box%)
Mientras que (X% < Y%)
Let Name$ = Pfad$;@GetString$(Box%,X%)
Execute_Änderungen Name$
Inc X%
EndWhile
Volver
ENDPROC
zeige Auswahldialog a Auswahl el Archivos
y para Bestimmen welche Atributos a ändern son
Proc Auswahldialog
@createtext(_dlg%,no ändern,498,374,90,20) 3428
@createtext(_dlg%,löschen,592,374,60,20) 3432
@createtext(_dlg%,conjunto,664,374,50,20) 3964
let RONoc%=@createradiobutton(_dlg%,,536,396,16,16) 3044
let RORes%=@createradiobutton(_dlg%,,606,396,16,16) 2332
let ROSet%=@createradiobutton(_dlg%,,680,396,16,16) 2448
@creategroupbox(_dlg%,,528,383,176,32) 2792
let HiNoc%=@createradiobutton(_dlg%,,536,426,16,16) 2436
let HiRes%=@createradiobutton(_dlg%,,606,426,16,16) 2776
let HiSet%=@createradiobutton(_dlg%,,680,426,16,16) 2420
@creategroupbox(_dlg%,,528,413,176,32) 2780
let ArNoc%=@createradiobutton(_dlg%,,536,456,16,16) 2388
let ArRes%=@createradiobutton(_dlg%,,606,456,16,16) 2804
let ArSet%=@createradiobutton(_dlg%,,680,456,16,16) 2796
@creategroupbox(_dlg%,,528,443,176,32) 2784
@createtext(_dlg%,Schreibschutz,408,392,100,16) 3060
@createtext(_dlg%,versteckt,408,426,104,16) 2676
@createtext(_dlg%,Archiv,408,456,104,16) 2464
let BOk%=@createbutton(_dlg%,markierte ändern,360,480,130,30) 3420
let BAl%=@createbutton(_dlg%,ALLE ändern,500,480,130,30) 3420
let BAbbr%=@createbutton(_dlg%,abbrechen,640,480,88,30) 3852
let BAlle%=@createbutton(_dlg%,todos marca,500,325,120,30) 3852
poner todos Radiobuttons en no ändern
SetCheck RoNoc%,1
SetCheck HiNoc%,1
SetCheck ArNoc%,1
blockiere OK Button si el Listbox 0 Einträge enthält
Case (@GetCount(Box%)= 0) : EnableWindow Bok%,0
Let Ende% = 0
Let Abbr% = 0
Sinestar encargado Ende%
If @GetFocus(Bok%)
Let Ende% = 1
ElseIf @GetFocus(BAbbr%)
Let Ende% = 1
Let Abbr% = 1
ElseIf @GetFocus(BAl%)
Let AlleKz% = 1
Let Ende% = 1
ElseIf @GetFocus(BAlle%)
Wähle_alle
@SetFocus(_dlg%) verhindert hängenbleiben el Taste todos auswählen
EndIf
EndWhile
Volver
ENDPROC
========
MainLine
========
SetTrueColor 1
Ventana de Estilo 16
Windowtitle Dateiattribute ändern
Ventana 0,0-800,600
CLS @RGB(255,255,255)
let _dlg%=@createdialog(%Hwnd,Diálogo,10,10,750,550)
Einleitung
Casenote Abbr% : Auswahldialog
Caso negativo Abbr%
If AlleKz%
Alle_ändern
Más
Attribute_ändern
EndIf
EndIf
@DestroyWindow(_dlg%)
@MessageBox(Programa wurde final,,32)
end