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

Flash Pascal Discussion :

Conversion de string en number


Sujet :

Flash Pascal

  1. #1
    Membre expérimenté
    Conversion de string en number
    J'ai tenté de déclarer et d'utiliser :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
     function parseFloat(expression:String) : Number external;


    en l'ajoutant à l'unité Flash8 mais elle ne fonctionne pas..

    Comment convertir une string d'un TextField.text en float (number)

    Une fonction du type strtofloat...

    merci

  2. #2
    Expert éminent sénior
    c'est pourtant bien cela...avec le point comme séparateur

    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
     
    program Project2;
     
    {$FRAME_WIDTH 550}
    {$FRAME_HEIGHT 400}
    {$FRAME_RATE 12}
    {$BACKGROUND $FFFFFF}
     
    uses
      Flash8;
     
    function parseFloat(expression: string): Number external;
     
    var
      t: TextField;
    begin
      t := TextField.Create(_root, '', 1, 10, 10, 100, 100);
      t.text := FloatToStr(parseFloat('1.25') + parseFloat('0.10'));
    end.


    et accessoirement tu peux aussi déclarer
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    function StrToFloat(expression: string): Number external 'parseFloat';
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Merci, en effet, ça ne venait pas de ParseFloat... J'avais un événement onKeyDown et j'ai oublié de metttre Key.addlistener(montextfield)...

    Autant pour moi

    merci encore. sympa la déclaration strtofloat à partir de ParseFloat...

    je retiens.


  4. #4
    Rédacteur/Modérateur

    C'est bon à savoir, tout ça.

    J'ai voulu écrire un petit exemple qui utilise la fonction StrToFloat. J'ai fait un programme qui convertit un nombre décimal en fraction :

    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
     
    program Fractions;
     
    {$FRAME_WIDTH 400}
    {$FRAME_HEIGHT 240}
     
    uses
      Flash8;
     
    function StrToFloat(expression: string): Number external 'parseFloat';
     
    type
      tFraction = record
                    n: integer; // numérateur
                    d: integer; // dénominateur
                  end;
     
    const
      dmax = 10000; // borne supérieure pour la recherche du dénominateur
     
    function Fraction(nombre: number): tFraction;
    var
      d: integer;
      e: number; // erreur
      m: number; // moindre erreur
    begin
      for d := 1 to dmax do
      begin
        e := Abs(nombre * d - Trunc(Math.Round(nombre * d)));
        if d = 1 then
          m := e
        else
          if e < m then
            m := e;
      end;
      for d := 1 to dmax do
      begin
        e := Abs(nombre * d - Trunc(Math.Round(nombre * d)));
        if e = m then
        begin
          Result.d := d;
          Result.n := Trunc(Math.Round(nombre * d));
          Exit;
        end;
      end;
    end;
     
    type
      tEditBox = class(textField)
        procedure onKeyDown;
      end;
     
    var
      e: tEditBox;
      t: textField;
     
    procedure tEditBox.onKeyDown;
    var
      f: tFraction;
    begin
      if key.getAscii = 13 then
      begin
        f := Fraction(StrToFloat(e.text));
        t.text := "Meilleur résultat: " + IntToStr(f.n) + "/" + IntToStr(f.d);
      end;
    end;
     
    begin
      with textField.Create(_root, 'label', 0, 0, 0, stage.width - 1, 4 * 16 + 4) do
      begin
        SetNewTextFormat(textFormat.Create('Courier New', 12));
        text := "FlashPascal 2."#13
              + "Conversion d'un nombre décimal en fraction."#13
              + "Veuillez saisir un nombre décimal:";
      end;
     
      e := tEditBox.Create(_root, 'input', 1, 0, 3 * 16 + 4, stage.width - 1, 16 + 4);
     
      e.setNewTextFormat(textFormat.Create('Courier New', 12));
      e.type := 'input';
      e.border := TRUE;
      e.borderColor := $e0e0e0;
      selection.setFocus(e);
      key.addListener(e);
     
      t := textField.Create(_root, 'output', 2, 0, 3 * 16 + 4 + 16 + 4, stage.Width - 1, stage.height - (3 * 16 + 4 + 16 + 4));
     
      t.SetNewTextFormat(textFormat.Create('Courier New', 12));
     
      stage.scaleMode := 'noScale';
    end.