yannba
Messages postés133Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention 7 septembre 2010
-
18 févr. 2006 à 13:16
jlen100 -
20 févr. 2006 à 18:41
Bonjour,
J'ai une form1 :
Code:,
----
uses unit2;
procedure TForm1.FormCreate(Sender: TObject);
begin
{Police récupérée dans le fichier "Options.opt"}
LoadFont(FileName: String; Section: string);
Dans un unit 2 :
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 18 févr. 2006 à 14:45
Salut yannba,
I. "J'ai un message d'erreur. Pourquoi ?" Il faut absolument que tu précises quel message d'erreur tu obtiens, s'il survient à la compilation ou à l'exécution, et sur quelle ligne s'arrête le compilateur.
II. Explique ce que tu cherches à faire au final, histoire que l'on ait une idée de ce que tu veux réaliser avec le code que tu donnes...
Que cherches-tu à faire par l'intermédiaire de ce code ? Lire une section d'un fichier ini ?
III. le code : filename:= (ExtractFilepath(application.ExeName)+ 'Options.opt','Sections Options') ;
n'est pas correct... Cela revient au même que d'utiliser cette syntaxe : FileName := 'xxxx' , 'xxxx';
Pourquoi mettre une virgule ????
IV. Proposition La même que Cirec... A condition que l'on ait bien compris ce que tu comptais faire. On peut cependant encore faire une légère modif, comme ça on supprime la déclaration de la variable Ini et on évite de réécrire Ini. à chaque fois que l'on veut procéder à une lecture/écriture :
uses IniFiles;
var FileName, FontName : string;
FileName : = ExtractFilepath(application.ExeName)+'Options.opt';
with TIniFile.Create(FileName) do try FontName := ReadString('SectionOptions', 'Font', 'Arial'); // Récupère le nom de la police stocké dans la valeur Font de la section SectionOptions du fichier ini, ou attribue la police Arial comme donnée par défaut si la valeur n'existe pas dans le fichier ini
[...]
finally Free;
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 18 févr. 2006 à 14:47
Bon c'est pas grave,
alors tu fait comme ça :
Dans la partie Interface de L'unit2 tu déclares tes variables comme suit :
Var
Form2 : TForm2;
ColorForm, ... :integer;
Implémentation
Procedure LoadFont(FileName: String; Section: string);
var ListeOptions: TIniFile;
begin Try ListeOptions:= TIniFile.Create(FileName);
ColorForm:=ListeOptions.ReadInteger(Section, 'ColorForm', Ici tu mets une couleur par défaut );
...
finally ListeOptions.Free ;
end;
End;
et dans Unit1
uses unit2;
//Var ColorForm, ... :integer; Ne pas redéclarer les variables elle sont accessibles grâce à Uses Unit2
procedure TForm1.FormCreate(Sender: TObject);
begin {Police récupérée dans le fichier "Options.opt"}
LoadFont(ExtractFilepath(application.ExeName)+ Options.opt','Sections Options');
Form1.Color: = ColorForm;
...
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 18 févr. 2006 à 13:56
Salut,
Essaye comme ça :
procedure LoadFont(FileName: String; Section: string);
Var Ini : TIniFile;
begin filename:= ExtractFilepath(application.ExeName)+ 'Options.opt';
Ini := TIniFile.Create(FileName);
Try ..... // ici le code qui va lise l'info
Finally Ini.Free
End;
End;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 18 févr. 2006 à 14:33
Salut,
C'est Normal, tu as deux fois ColorForm une fois dans Unit1 et une fois dans Unit2 pour le compilateur c'est deux variables totalement différentes.
Exxayse comme ceci :
uses unit2;
//Var ColorForm, ... :integer;
procedure TForm1.FormCreate(Sender: TObject);
begin {Police récupérée dans le fichier "Options.opt"}
Form1.Color:= LoadFont(ExtractFilepath(application.ExeName)+ Options.opt','Sections Options');
...
end ;
Dans l'unit 2 :
uses inifiles;
//Var ColorForm, ... :integer;
Function LoadFont(FileName: String; Section: string): Integer;
var ListeOptions: TIniFile;
begin Try ListeOptions: =TIniFile.Create(FileName);
Result:=ListeOptions.ReadInteger(Section, 'ColorForm', Ici tu mets une couleur par défaut);
...
finally ListeOptions.Free ;
end;
End;
yannba
Messages postés133Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention 7 septembre 2010 18 févr. 2006 à 14:39
Je ne peux pas faire une function car, j'ai plusieurs données à récupérer :
ex :
ColorPanneaux:=ListeOptions.ReadInteger(Section, 'ColorPanneaux', ColorPanneaux);
FontNameAffichage:=ListeOptions.ReadString(Section, 'FontNameAffichage', FontNameAffichage);
FontColorAffichage:=ListeOptions.ReadInteger(Section, 'FontColorAffichage', FontColorAffichage);
FontSizeAffichage:=ListeOptions.ReadInteger(Section, 'FontSizeAffichage', FontSizeAffichage);
FontStyleAffichage:=ListeOptions.ReadInteger(Section, 'FontStyleAffichage', FontStyleAffichage);
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 20 févr. 2006 à 10:50
un petit tip vite fait, a propos des couleurs dans un Tini :
Un Tcolor est un integer (Rgb(gnah,gnah,gnah) renvoi un cardinal, mais ca marche comme un integer). le lien entre R, G & B et la valeur (integer) de cette couleur c'est:
RGB(r,g,b) = r + 256 x g + (256 x 256) x b
Ca peut toujours servir pour faire des tests vite fait.