begin process at 2008 07 21 00:09:43
1 213 521 membres
422 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Réccupérer des données sur un autre Unit [ Archives / J'AI BESOIN D'AIDE !!!! :O ] (m_cyril1)

Réccupérer des données sur un autre Unit le 09/05/2005 14:20:30

m_cyril1
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)}

procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Memo: TMemo;

var Memoire:array of Real;
var n:Integer;

implementation

{$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;


{Unit (nom :result)  de la Form de la segonde Form (nom:resultat)}
 procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Resultat: TResultat;

implementation

{$R *.dfm}

procedure TResultat.FormCreate(Sender: TObject);
var i:Integer;
begin
  For i=0 to ???
      begin
         ???
      end; 
  Resultat.Text:=IntToStr(???);
end;

procedure TResultat.FermerClick(Sender: TObject);
begin
  Close;
end;

Donc faudrait que j'arrive à réccupérer les données du tableau dynamique pour pouvoir faire la somme et à remplacer les ??? 

end.


Re : Réccupérer des données sur un autre Unit le 09/05/2005 19:15:47

WhiteHippo
Membre Club

{Unit (nom :memorisation)  de la Form de la première form (nom:memo)}
type
  TMemo = class(TForm)
  private
    { Déclarations privées }
  public
   
// Déclaration de ton tableau ici !!
      Memoire:array of Real;
   end;

var
  Memo : TMemo ;

Utilisation :

Unit (nom :result)  de la Form de la segonde Form (nom:resultat)}
 procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Resultat: TResultat;

implementation

{$R *.dfm}


uses TMemo ;

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;

Cordialement.


Re : Réccupérer des données sur un autre Unit le 09/05/2005 19:17:20

WhiteHippo
Membre Club
oups uses Memorisation ; bien sur et pas uses TMemo ; 

Cordialement.

Re : Réccupérer des données sur un autre Unit le 10/05/2005 09:23:15

m_cyril1

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;

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


Re : Réccupérer des données sur un autre Unit le 10/05/2005 12:40:00

WhiteHippo
Membre Club

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;

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.


Re : Réccupérer des données sur un autre Unit le 10/05/2005 13:30:23

m_cyril1
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'




Re : Réccupérer des données sur un autre Unit le 10/05/2005 19:03:02

WhiteHippo
Membre Club
Il manque juste le : du := !!!

For i:=0

Cordialement.

Re : Réccupérer des données sur un autre Unit le 11/05/2005 09:00:20

m_cyril1

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 FermerClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Resultat: TResultat;

implementation

{$R *.dfm}

uses Memoriser ;

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;

end.



Classé sous : form, end, sender, procedure, tobject

Participer à cet échange

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS