Hallo!
Ich kann jetzt keine Tests machen

, daher weiß ich nicht, ob das, was ich sage stimmt...
1. Lass Dir mal in einer Liste (z.B. in einem Memo) alle Dateinamen, die geändert wurden, noch einmal mit anzeigen und lass daneben jeweils mit FileGetAttr die (nach dem Setzen) neuen Attribute anzeigen. (Das sind einfache Integers)
Die Attribute müssten ja neu auf 0 stehen.
2. Es könnte gehen, wenn Du einfach nur faAnyFile als neues Attribut angibst oder die alten Attribute beibehälst und nur das Schreibschutz-Attribut wegnimmst:
Delphi-Quelltext
1: 2: 3: 4: 5:
| var a: String; (...) a:=Schreibschutz.Items.Strings[i]; If (FileGetAttr(a) and faReadOnly)<>0 then Edit2.Text := Edit2.Text + ',' + InttoStr(FileSetAttr(a,FileGetAttr(a) or not faReadOnly)); |
Hier wird, falls die Datei schreibgeschützt ist, das entsprechende Attribut entfernt. (hoffe ich

, sonst muss es heißen:
Delphi-Quelltext
1:
| Edit2.Text := Edit2.Text + ',' + InttoStr(FileSetAttr(a,FileGetAttr(a) - faReadOnly)); |
)
Alternativ wäre die Möglichkeit mit faAnyFile:
Delphi-Quelltext
1: 2: 3: 4: 5:
| var a: String; (...) a:=Schreibschutz.Items.Strings[i]; If (FileGetAttr(a) and faReadOnly)<>0 then Edit2.Text := Edit2.Text + ',' + InttoStr(FileSetAttr(a,faAnyFile)); |
Probier das mal aus, wenn das auch nicht geht, wüsste ich im Moment keine andere Erklärung.
(Es wäre aber total unsinnig, wenn "kein Attribut" nicht durch 0 darstellbar wäre, was ja eigentlich so funktionieren sollte...)
Viel Erfolg,
S.J.