cs_ridertart
Messages postés8Date d'inscriptionlundi 11 décembre 2006StatutMembreDernière intervention19 décembre 2006
-
11 déc. 2006 à 23:26
cs_ridertart
Messages postés8Date d'inscriptionlundi 11 décembre 2006StatutMembreDernière intervention19 décembre 2006
-
19 déc. 2006 à 15:22
Salut à tous, j'ai un petit souci avec mon programme en delphi ...
Je veux créer une procédure faisant appel à des composant de ma Form1 genre TStringrid; TEdit; TLabeledEdit ... et pouvoir refaire appel à cette procédure plus tard.
Bon je met un peu de code pour que vous compreniez :
//un bout de mon programme et une partie de ma procédure
m : Array[1..6,1..14] of real;
...
...
...
procedure AjusteT();
var
i : integer;
StringGrid22 : TStringGrid; // ?
LabeledEdit3 : TLabeledEdit; //?
Edit7 : TEdit; //?
//je ne sais pas si les 3 lignes au dessus sont nécéssaire mais sinon delphi indique un problème
//"undeclared identifier StringGrid22" par exemple. Mais ces composant sont déja déclaré
//dans la partie type du programme (tout au début)
begin
StringGrid22 := Form1.StringGrid22; // ?
LabeledEdit3 := Form1.LabeledEdit3; // ?
Edit7 := Form1.Edit7; // ?
//idem je ne sais pas si les 3 lignes au dessus sont nécéssaire mais sinon delphi indique un problème
//"undeclared identifier StringGrid22" par exemple
m[1,13] := 0; m[2,13] := 0;
m[1,14] := 0; m[2,14] := 0;
For i:=1 to 12 do
begin
m[1,i] := StrToReal(StringGrid22.Cells[1,i]);
m[2,i] := m[1,i] + StrToReal(LabeledEdit3.Text);
end;
...
...
...
end;
//puis plus tard j'appelle cette procédure
procedure TForm1.Button1Click(Sender: TObject);
begin
AjusteT();
end;
Donc il y a plusieurs problèmes. Par exemple la valeur de mon LabeledEdit3 (lorsque je la teste plus loin)n'est pas la bonne .... C'est donc pour ca que je me suis dit qu'il y a un problème d'initialisation.
Pouvez vous m'indiquer ce qu'il faut faire pour remédier à celà ? Merci d'avance.
Sinon dites moi si ma façon de déclarer les composant (les 2*3 lignes en vert) est la bonne.
procedure TForm1.AjusteT(var aFM : TFMatrix);
var
i : integer;
begin
aFM[1,13] := 0;
aFM[2,13] := 0;
aFM[1,14] := 0;
aFM[2,14] := 0;
for i := 1 to 12 do begin
aFM[1,i] := StrToFloat(StringGrid22.Cells[1,i]);
aFM[2,i] := aFM[1,i] + StrToFloat(LabeledEdit7.Text);
end;
end;
Je n'ai pas osé le faire car c'est assez compliqué vu que ce que j'ai écris est uniquement un seul tableau et une seule de mes fonction ... j'ai environ 5 fonctions et environ 15 tableau (array)...
Il y aurait t'il une autre solution ?
Car à cause de celà la valeur contenu par exemple dans un LabeledEdit n'est pas là bonne lorsque je lui fais appel dans une procédure (procedure AjusteT();) par exemple le LabeledEdit7.Text même que celui inscrit.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 12 déc. 2006 à 00:22
m : Array[1..6,1..14] of single; { 336 octets }
ou pour plus de precisions :
m : Array[1..6,1..14] of extended;
{ 840 octets}
le type Real est a eviter...
procedure AjusteT;
var
i : integer;
begin
with Form1 do begin
m[1,13] := 0;
m[2,13] := 0;
m[1,14] := 0;
m[2,14] := 0;
for i := 1 to 12 do begin
m[1,i] := StrToFloat(StringGrid22.Cells[1,i]);
m[2,i] := m[1,i] + StrToFloat(LabeledEdit7.Text);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AjusteT;
end;
ou on peut egalement declarer AjusteT dans la zone Public de TForm1 ...
et la declarer ensuite comme cela :
i : integer;
begin
aFM[1,13] := 0;
aFM[2,13] := 0;
aFM[1,14] := 0;
aFM[2,14] := 0;
for i := 1 to 12 do begin
aFM[1,i] := StrToFloat(StringGrid22.Cells[1,i]);
aFM[2,i] := aFM[1,i] + StrToFloat(LabeledEdit7.Text);
end;
end;