Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Dateiattrebute ändern (https://www.delphipraxis.net/26075-dateiattrebute-aendern.html)

Master_BB 17. Jul 2004 17:06


Dateiattrebute ändern
 
Heya,
eine FindFirst Funktion von mir soll die gesuchten File die dann kopiert werden
vorher noch in ihren Dateiattrebuten verändern. Bzw den Schreibschutz rausnehmen.

so gehts nicht...
wie dann?
Delphi-Quellcode:
  ASearchRec.Attr := ASearchRec.Attr - faReadOnly;


Greetz
Master_BB

Duffy 17. Jul 2004 17:09

Re: Dateiattrebute ändern
 
Hallo Master_BB
Zitat:

Zitat von Master_BB
Heya,
eine FindFirst Funktion von mir soll die gesuchten File die dann kopiert werden
vorher noch in ihren Dateiattrebuten verändern. Bzw den Schreibschutz rausnehmen.

so gehts nicht...
wie dann?
Delphi-Quellcode:
  ASearchRec.Attr := ASearchRec.Attr - faReadOnly;


Greetz
Master_BB

so sollte es gehen
Delphi-Quellcode:
  ASearchRec.Attr := ASearchRec.Attr xor faReadOnly;
bye
Claus

Master_BB 17. Jul 2004 17:16

Re: Dateiattrebute ändern
 
ne geht nicht die kopierte file ist immernoch schreibgeschützt.

Duffy 17. Jul 2004 17:20

Re: Dateiattrebute ändern
 
Hallo Master_BB,
und jetzt das Ganze mit
Delphi-Quellcode:
 ASearchRec.Attr := ASearchRec.Attr and faReadOnly;

bye
Claus

Master_BB 17. Jul 2004 17:32

Re: Dateiattrebute ändern
 
nope geht auch mit and nicht
faReadOnly muß ja raus aus den Attrebuten würste nicht was ein and dort helfen sollte

Duffy 17. Jul 2004 17:44

Re: Dateiattrebute ändern
 
Hallo Master_BB,
wie wärs denn mal mit einem "not" davor

bye
Claus

himitsu 17. Jul 2004 17:49

Re: Dateiattrebute ändern
 
Mit and setzt du das Attribut, es soll aber weg. :zwinker:
Und mit "ASearchRec.Attr := ASearchRec.Attr and faReadOnly;" werden alle anderen Attribute zurückgesetzt, nur ein eventuell vorhandenes ReadOnly nicht.

Ausserdem müssen die Attribute auch noch der Datei und nicht nur dem SearchRecord zugewiesen werden.

Code:
FileSetAttr([color=gray]Verzeichnis +[/color] ASearchRec.Name, ASearchRec.Attr and not faReadOnly);

Master_BB 17. Jul 2004 17:54

Re: Dateiattrebute ändern
 
nope ging auch nicht @ Duffy
ich habs jetzt aber selbst über die hilfe herrausgefunden und so gelöst

Delphi-Quellcode:
if (FileGetAttr(ADestPath + ASearchRec.Name) and faReadOnly) > 0
  then FileSetAttr(ADestPath + ASearchRec.Name, ASearchRec.Attr xor faReadOnly);
Greetz

w3seek 17. Jul 2004 18:43

Re: Dateiattrebute ändern
 
Delphi-Quellcode:
ASearchRec.Attr := ASearchRec.Attr and not faReadOnly;
damit maskierst du faReadOnly (d.h. alle bits auusser faReadOnly sind 1) und durch and uebernimmst du alle anderen bits so wie sie sind.

So sollte es eigentlich gehen.

himitsu 17. Jul 2004 20:08

Re: Dateiattrebute ändern
 
genau @w3seek
mit "and not" kann man das Bit direkt abschalten.
mit "xor" wird das Bit umgeschaltet (0 > 1 oder 1 > 0), deshalb muß dabei vorher erst mit "and" geprüft werden, ob es auch wirkich au 1 steht, da es ja sonst aktiviert würde, wenn es auf 0 stünde.

und wie gesagt: FileSetAttr wird benötigt, damit auch die Attribute der Datei geändert werden, aber das hast du ja endlich rausgefunden


Also kurzgesagt ... siehe meinen vorherigen Beitrag http://FNSE.de/15C.gif


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz