mikesvl
Messages postés4Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention27 août 2005
-
24 juil. 2005 à 00:05
mikesvl
Messages postés4Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention27 août 2005
-
25 juil. 2005 à 01:07
Malgré plusieurs essais je n'arrive pas écrire dans le fichier
MSDOS.SYS. Voici la procédure utilisée (voir ci-dessous). A l'éxécution
j'ai un message me disant 'impossible d'écrire dans c:\MSDOS.sys'. Je
ne vois pas l'erreur.... Je modifie pourtant les attributs du
fichier....
Merci.
procedure pilote_disk_compress;
var attrib :byte;
begin
attrib:=FileGetAttr('c:\msdos.sys');
attrib:=attrib and not faReadOnly and not fahidden and not fasysfile;
filesetattr('c:\msdos.sys',attrib);
fichierini := Tinifile.Create('c:\msdos.sys');
if form1.CheckBox_pilote_disk_compress.State=cbChecked then
begin
fichierini.WriteString('Options','DBLSpace','0');
fichierini := Tinifile.Create('c:\msdos.sys');
fichierini.WriteString('Options','DRVSpace','0');
end
else
begin
fichierini.WriteString('Options','DBLSpace','1');
fichierini := Tinifile.Create('c:\msdos.sys');
fichierini.WriteString('Options','DRVSpace','1');
end;
attrib:=FileGetAttr('c:\msdos.sys');
attrib:=attrib or faReadOnly or fahidden or fasysfile;
cs_grandvizir
Messages postés1106Date d'inscriptionsamedi 8 novembre 2003StatutMembreDernière intervention 3 septembre 200622 24 juil. 2005 à 21:30
Si on résume, tu enchaînes grosso-modo (qu'elle que soit la condition) ceci :
fichierini := Tinifile.Create('c:\msdos.sys');
fichierini.WriteString('Options','DBLSpace','0');
fichierini := Tinifile.Create('c:\msdos.sys');
Sur le Create, le fichier est ouvert, et tu le réouvres 2 lignes après : impossible !
TIniFile est une classe, et doit être libérée. Je te donne un code bien plus simple qui devrait effacer les horribles redondances programmistiques que j'ai vues dans ton code (en plus, ce code est plus court) :
procedure pilote_disk_compress;
const FN = 'c:\msdos.sys';
ISection = 'Options';
var Cle : char;
begin filesetattr(FN,FileGetAttr(FN) and not faReadOnly and not fahidden and not fasysfile);
Cle: =Chr(Ord('0') + Ord(not form1.CheckBox_pilote_disk_compress.Checked));
with TInifile.Create(FN) do //Ouverture...
try WriteString(ISection,'DBLSpace',Cle);
WriteString(ISection,'DRVSpace',Cle);
finally Free; //... Fermeture
end;
filesetattr(FN,FileGetAttr(FN) or faReadOnly or fahidden or fasysfile);
pilote_disk_compresse:= false;
end ;
Je t'embête avec la ligne Cle: =... mais c'est pour voir comment des conditions peuvent être compactées.