Algorithme equation 1er degré

Bonjour,

je commence les algorithme et je doi faire celui d'une equation du premier degre. j'utilise le language delphi
donc j'ai ça

procedure TForm1.btnresoudreClick(Sender: TObject);
var A,B,solution:Real;
A:=strtofloat(editA.text);
B:=strtofloat(editB.Text);
if (A<>0) then
begin
solution:=-B/A;
editsolution.Text:=floattostr(solution);
end
else
showmessage('impossible de diviser par 0');
end.


mais ca ne marche pas donc pouvez vous m'aider si vous vous y connaissait en delphi

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut !

    Pour info, Delphi c'est du Pascal ! le savoir t'aidera à trouver plus rapidement des réponses dans le forum ;-)

    1) il te manque un begin entre les déclarations de variables et le début du code.
    2) une procédure se termine par un ";" il n'y a que le programme qui termine par un "."
    1. unit Unitequation;
      
      interface
      
      uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, StdCtrls;
      
      type
        Tfrmequation = class(TForm)
          LblA: TLabel;
          LblB: TLabel;
          btnresoudre: TButton;
          EditA: TEdit;
          EditB: TEdit;
          Lblsolution: TLabel;
          Editsolution: TEdit;
          procedure btnresoudreClick(Sender: TObject);
        private
          { Déclarations privées }
        public
          { Déclarations publiques }
        end;
      
      var
        frmequation: Tfrmequation;
      
      implementation
      
      {$R *.dfm}
      
      procedure Tfrmequation.btnresoudreClick(Sender: TObject);
      var A,B,solution:real;
      begin
      A:=strtofloat(editA.text);
      B:=strtofloat(editB.Text);
      
      if a<>0 then
      begin
      solution:=-B/A;
      editsolution.Text:=floattostr(solution);
      end
      else
      showmessage ('impossible de diviser par 0')
      
      end;
      
      


      c'est ça que tu as besoin ?
      1. Modérateur
        oui ça me va :)
    2. Modérateur
      Tu as oublié un ";" à la fin de ton instruction showmessage, essaye de modifier ça déjà.
      1. Modérateur
        Si ça ne marche pas, modifie procedure Tfrmequation.btnresoudreClick(Sender: TObject); en
        procedure frmequation.btnresoudreClick(Sender: TObject); ce qui serait plus logique.
      2. non si je modifie procedure ca me met erreur . donc j'ai mi le ; apres l'instruction showmessage mais maintenant c pour le dernier end que ca bug si je met end; j'ai une ligne rouge mais en dessous tout le code donc je sais pas c'est quoi qui bug. si je met end. bun ca me dit que c'est une erreur pour cette ligne et si je met rien ca me fait la même erreur que lorsque je met end;
      3. quand j'execute ca me met ça

        [Erreur] Unitresolution.pas(50): ';' attendu(e) mais fin de fichier trouvé(e)
        [Erreur fatale] Projectresolution.dpr(5): Impossible de compiler l'unité utilisée 'Unitresolution.pas'
      4. Modérateur
        C'est parce qu'il te manque ton point d'entrée !
        Il faut terminer ton unité par begin end.

        Comme ça, ça peux paraître idiot mais ça ne l'est pas tant que ça...
        Si tu veux regarde une unité que j'ai faite il y a pas mal de temps déjà (ici), tu verras que le begin end. final peux parfois servir à initialiser l'unité.
      5. Modérateur
        Tu devrais donc avoir :

        implementation
        
        {$R *.dfm}
        
        procedure Tfrmequation.btnresoudreClick(Sender: TObject);
        var A,B,solution:real;
        begin
        A:=strtofloat(editA.text);
        B:=strtofloat(editB.Text);
        
        if a<>0 then
        begin
        solution:=-B/A;
        editsolution.Text:=floattostr(solution);
        end
        else
        showmessage ('impossible de diviser par 0');
        
        end;
        
        begin end.
    3. donc ca donne ça

      procedure TForm1.btnresoudreClick(Sender: TObject);
      var A,B,solution:Real;
      begin
      A:=strtofloat(editA.text);
      B:=strtofloat(editB.Text);
      if (A<>0) then
      begin
      solution:=-B/A;
      editsolution.Text:=floattostr(solution);
      end;
      else
      showmessage('impossible de diviser par 0');
      end.

      mais la c'est dans la ligne du if que ca me met une faute je doit dire a différent de zéro mais je sais pas comment faire à part <>
      1. oui mais qu'est que vous à dire ''showmessage"
    4. Modérateur
      En fait le <>0 me dérange aussi, mais je n'arrive pas à me souvenir comment on fait en Pascal :p
      Enlève les parenthèses déjà, je pense que c'est ça qui pose problème.
      1. oui sans les paranthèse ca passe mais ca me met encore des erreurs que je ne comprend pas pour cette ligne la
        editsolution.Text:=floattostr(solution);

        pourtant mes autres exercice fonctionnaient comme ça
        1. Modérateur
          Je n'ai pas le code correspondant à la déclaration de editsolution.
          Assure toi que editsolution.Text existe et est bien de type string.

          PS. si tu as un message d'erreur (même incompréhensible pour toi) donne le quand même, ça peux toujours aider à comprendre
        2. comment je peux verifier ?? moi a l'ecole je fait comme ca et j'ai jamais d'erreur dans ces ligne là
        3. [Erreur fatale] Projectresolution.dpr(5): Impossible de compiler l'unité utilisée 'Unitresolution.pas' c'est quoi ca
        4. Modérateur
          Ton programme ne se limite pas à la procédure btnresoudreClick, il y a forcément du code ailleurs.

          Je pense que dans ton code tu dois faire un uses Unitresolution
          En effet, il doit y avoir quelque part (sûrement caché dans le fichier Unitresolution.pas) la déclaration de TForm1, editA, editB, editsolution, ainsi que le point d'entrée du programme.
        5. je suis perdu la j'ai jamais etait plus loin que ce que je fait maintenant . j'ai eu 4 cours d'info seulement je n'est pas vu grand chose et ca se limite a ce que j'ai écrit