IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

comment ajouter un code a mon programme?


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 32
    Points
    32
    Par défaut comment ajouter un code a mon programme?
    Bonjour

    je veus que mon programme insere un texte entrer par l'utilisateur ce texte réelement c'est code mais mon programme le consedere comme un texte comment que je puisse le convertir pour qu'il le consedere comme un code delphi

    exp : l'utilisateur entre le texte "cos(45)+(1/sin(30))" alors je veut que mon programme utilise ce texte directement comme un code pour calculer cette formule mais je ne sais pas comment le faire

    merci

  2. #2
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    c'est pas du code delphi mais une fonction mathématique.
    Cos(45)+(1/Sin(30))
    il te faudra une procédure qui va parcourir ta chaine de caractères et construire ta fonction.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 32
    Points
    32
    Par défaut
    [QUOTE=aityahia]c'est pas du code delphi mais une fonction mathématique.


    Je sais que c'est une fonction matematique alors mon but et de ne pas implimenter un programme qui permet de traiter les chaine mais je veus simplement integer cette formule directent dans mon code si vous connaissez une routine qui permetent cela

    exp :

    lorsque j'entre dans le champs de saisi sin(25)+(1/cos(47)) mon programme
    doit transformer en code de cette façon

    Procedure calculer()
    x:float
    begin

    x:= sin(25)+(1/cos(47)) {Mon Probleme est comment la transformer en code}
    showmessage(floattostr(x));

    end;


    merci

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    j'ai déjà vu des composants qui faisaient ça...en fait la question principale est de savoir s'il est acceptable d'interpréter la formule ou si - pour des raisons de performance par exemple - il est nécessaire de la "compiler".

    voici le source d'un calculateur que j'ai écrit il y a 10 ans de cela en Turbo Pascal A l'époque j'étais abonné chez Compuserve :p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    Program Calc;
    Var
     Debug:boolean;
     Math:string;
     imp:string;
     x:byte;
     
    Procedure Error(ErrorMsg:string);
     begin
      WriteLn(Math);
      While x>1 do begin write(' '); dec(x); end; WriteLn('^');
      WriteLn(ErrorMsg);
      Halt(10);
     end;
     
    function EvalMath:real; forward;
     
    Function RealVal(s:string):real;
     var
      v:real;
      x:byte;
     begin
      v:=0;
      for x:=1 to length(s) do begin
       v:=v*10+ord(s[x])-ord('0');
      end;
      RealVal:=v;
     end;
     
    Function EvalFactor:real;
     var
      s:string;
      v:real;
     begin
      Case Math[x] of
       '(' : begin
        inc(x); EvalFactor:=EvalMath;
        if Math[x]<>')' then Error('Expected [)]');
        inc(x);
       end;
       '0'..'9': begin
        s:='';
        While (x<=Length(Math))and(Math[x] in ['0'..'9']) do begin
         s:=s+Math[x];
         inc(x);
        end;
        v:=RealVal(s);
        if debug then writeln(imp,v:0:2);
        EvalFactor:=v;
       end;
       else Error('Invalid number');
      end;
     end;
     
    Function EvalTerme:real;
     var
      v1,v2:real;
      op:char;
     begin
      v1:=EvalFactor;
      while Math[x] in ['*','/'] do begin
       op:=Math[x]; inc(x);
       if debug then begin
        writeln(imp,op);
        imp:=imp+' ';
       end;
       v2:=EvalFactor;
       if op='*' then v1:=v1*v2 else v1:=v1/v2;
       if debug then begin
        dec(imp[0]);
        writeln(imp,'=',v1:0:2);
       end;
      end;
      EvalTerme:=v1;
     end;
     
    Function EvalMath:real;
     var
      v1,v2:real;
      op:char;
     begin
      v1:=EvalTerme;
      while Math[x] in ['+','-'] do begin
       op:=Math[x]; inc(x);
       if debug then begin
        writeln(imp,op);
        imp:=imp+' ';
       end;
       v2:=EvalTerme;
       if op='+' then v1:=v1+v2 else v1:=v1-v2;
       if debug then begin
        dec(imp[0]);
        writeln(imp,'=',v1:0:2);
       end;
      end;
      EvalMath:=v1;
     end;
     
    begin
     if (paramcount=0)or(paramstr(1)='/?') then begin
      WriteLn('C By Paul Toth (101350.2175@Compuserve.com)');
      WriteLn(' C [?] "mathematic operation"');
      exit;
     end;
     Debug:=Paramstr(1)='?';
     Math:='';
     for x:=1+Ord(Debug) to ParamCount do begin
      Math:=Math+ParamStr(x);
     end;
     x:=1;
     imp:='';
     WriteLn(EvalMath:0:2);
    end.
    tu as ici, un programme qui interprète une expression mathématique simple (+ - / *)...c'est la base de l'interprétation mathématique, l'ajout des sinus et cosinus garde le même principe.

    Pour une compilation, c'est un poil plus compliqué, mais ça n'est nécessaire que si ta formule est utilisée intensivement dans une procédure en boucle par exemple...enfin c'est mon avis
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Il me semble qu'il y a eu des posts sur du Pascal Script pour répondre à ton besoin.

    Par exemple:
    http://www.developpez.net/forums/sho...=pascal+script
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

Discussions similaires

  1. trouve pas comment faire un algo pour mon programme
    Par unknoweb dans le forum Débuter avec Java
    Réponses: 21
    Dernier message: 12/04/2007, 17h17
  2. Réponses: 14
    Dernier message: 27/10/2006, 13h08
  3. comment ajouter une image dans mon HTML??
    Par Mickey.jet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/03/2006, 15h12
  4. Comment ajouter du code a la suite ?
    Par maximenet dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 03/02/2006, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo