m_cyril1
Messages postés59Date d'inscriptionmercredi 30 mars 2005StatutMembreDernière intervention 3 juin 2005
-
9 mai 2005 à 14:20
m_cyril1
Messages postés59Date d'inscriptionmercredi 30 mars 2005StatutMembreDernière intervention 3 juin 2005
-
11 mai 2005 à 09:00
J'ai fait un petit programme, celui-ci mémorise des chiffres entier sur une première form et sur la deuxième le résultat de la somme des chiffres s'affiche. Moi ce que je voudrait faire c'est que le calcul s'effectue sur le Unit de la deuxième Form et non que tout le programme soit sur l'unit de la prmière Form. mais je ne vois pas comment faire
J'ai modifier mon programme en:
{Unit (nom :memorisation) de la Form de la première form (nom:memo)}<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
m_cyril1
Messages postés59Date d'inscriptionmercredi 30 mars 2005StatutMembreDernière intervention 3 juin 2005 10 mai 2005 à 09:23
Ok! J'ai fait les modifications mais il n'apprécie pas la deuxième condition de la boucle For et ce qu'il y a dedans
Et en plus j'avais oublié un bouton pour lancer le calcul. Le Code ça donne:
{Unit (nom :memoriser) de la Form de la première form (nom:memo)}
public
{ Déclarations publiques }
Memoire:array of Real; end;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
var Memo: TMemo;
var n:Integer;
implementation
uses result;
{$R *.dfm}
procedure TMemo.FormCreate(Sender: TObject);
begin
n:=0;
SetLength(Memoire, n);
MemoEd.Clear;
end;
procedure TMemo.MemoButClick(Sender: TObject);
begin
inc(n);
SetLength(Memoire, n);
Memoire[n-1]:=StrToInt(MemoEd.Text);
MemoEd.Clear;
end;
procedure TMemo.FermerButClick(Sender: TObject);
begin
close;
end;
procedure TMemo.CalculerClick(Sender: TObject);
begin
Resultat.show;
end;
{Unit (nom :result) de la Form de la segonde Form (nom:resultat)}
var Resultat: TResultat;
implementation
uses Memoriser;
{$R *.dfm}
procedure TResultat.FormCreate(Sender: TObject);
var i,total:Integer;
begin
Total:=0;
For i=0 to Length(Memoire)-1 do
begin
Inc( Total, Memoire[i] );
end;
Resultat.Text:=IntToStr(Total);
end;
procedure TResultat.FermerClick(Sender: TObject);
begin
Close;
end;
Je sais que je ne suis pas doué, mais la j'ai juste fais un copier coller. J'ai essayer en déclarant n dans public et donc la boucle devient For i=0 to n-1 do, mais c'est pareil.
PS: Quel est l'avantage de déclarer ses tableaux ou certaines variables dans public
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 10 mai 2005 à 12:40
Désolé mais je t'ai répondu rapidement et sans vérifier.
Comme toujours :
"vite fait mal fait"
il faut écrire :
procedure TResultat.FormCreate(Sender: TObject);
var i,total:Integer;
begin
Total:= 0;
For i=0 to Length( Memo. Memoire)-1 do
begin
Inc( Total, Memo.Memoire[i] );
end;
Resultat.Text: =IntToStr(Total);end;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />
En effet ton tableau mémoire est contenu dans ta fiche Memo.
On déclare Memoire en section public afin de pouvoir l'utiliser dans d'autres unités. On Aurait pu également le déclarer en variable globale, mais je ne suis pas pour...
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
m_cyril1
Messages postés59Date d'inscriptionmercredi 30 mars 2005StatutMembreDernière intervention 3 juin 2005 10 mai 2005 à 13:30
J'ai modifié et j'ai toujours les messages:
[Erreur] result.pas(37): La variable de contrôle de boucle FOR doit être une variable locale simple
[Erreur] result.pas(37): Types incompatibles : 'Boolean' et 'Integer'
[Erreur] result.pas(38): Expression attendu(e) mais 'BEGIN' trouvé(e)
[Erreur] result.pas(39): Types incompatibles
[Erreur fatale] memoriser.pas(32): Impossible de compiler l'unité utilisée 'result.pas'
m_cyril1
Messages postés59Date d'inscriptionmercredi 30 mars 2005StatutMembreDernière intervention 3 juin 2005 11 mai 2005 à 09:00
Ouais maintenant avec le := ça fonctionne plus ou moins
Explication : pas d'erreur de compilation le programme de mémorisation fonctionne, on mémorise quelques chiffres, on appui sur calculer et la c'est le drame le TEdit est vide
La partie {Unit (nom :memoriser) de la Form de la première form (nom:memo)} n'a pas changé.
Et la partie {Unit (nom :result) de la Form de la segonde Form (nom:resultat)}
devient:
procedure TResultat.FormCreate(Sender: TObject);
var i,Total:Integer;
begin
Total:=0 ;
For i:=0 to Length(Memo.Memoire)-1
do
begin
Inc( Total, Memo.Memoire[i] ) ;
end;
Resultat.Text:=IntToStr(Total );
end;
procedure TResultat.FermerClick(Sender: TObject);
begin
Close;
end;