Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Ce sujet est verrouillé; vous ne pouvez pas éditer les messages ou faire de réponses. Page 1 sur 1
[R] Faire un calcule basé sur une chaine de caractère.
Auteur Message
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Aujourd'hui je vient vous demander de l'aide pour un cas... Pas très commun.

En effet je souhaite (pour m'entrainer) programmer une calculatrice (avec une belle GUI bien propre) en EventMod (sa n'a pas vraiment d'importance).

Donc quand l'utilisateur va cliquer sur les touches "1, 2, 3 etc..." ou "*, -, +, etc..." le programme va les enregistrer une a une dans une même variable de cette manière la:
Code:
$num = $num & Caractère(opérateur ou chiffre)


Lorsque l'on veut donner le résultat, nous arrivons a une chaine de se type "48 / 2 + 1".
AutoIt prend cette chaine comme un texte normal (a mon avis) et donc, impossible de la calculer...

J'ai chercher dans la doc mais je n'est pas trouver de fonction qui permettais ceci.

Avez vous une solution? Ou aurai-je louper une fonction?

Merci d'avance!
(Et au passage, Joyeux noël!)

£`/@]



Dernière édition par rekah le Lun 26 Déc 2011 - 17:53; édité 1 fois

______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Salut,

J'avais le même problème avec ma calculatrice.

Ce que tu dois faire c'est un switch qui où chaque case correspond à une opération.




______________________________________________________
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Merci de ta réponse Sablier mais, tu pourrais m'expliquer plus précisément?
Je ne vois pas trop se que tu veux dire...

Un petit exemple (de code) serais le bienvenue :p

Merci beaucoup,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Je pensais à quelque chose comme ceci :

Code:

$operator = "+"
$nombre = 2
Switch $operator
   Case "+"
      $resultat = $nombre + $nombre
EndSwitch





______________________________________________________
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
hello!

eventuellement tu peux toujours utiliser une dll ou ruser en créant dynamiquement un script qui calcule le resultat ...

@+




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Merci beaucoup de vos réponse mais à mon avis vous n'avez pas vraiment compris mon bute.

Je veux faire une calculatrice du type:

(celle de windows)

Edit: Je posterais le code actuel de ma calculatrice cette après midi.

Une solution?
Merci,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Avec hotkey ?
Code:
HotKeySet("{1}", "1")
HotKeySet("{2}", "2")
HotKeySet("{3}", "3")
HotKeySet("{4}", "4")
HotKeySet("{5}", "5")
HotKeySet("{6}", "6")
HotKeySet("{7}", "7")
HotKeySet("{8}", "8")
HotKeySet("{9}", "9")
HotKeySet("{+}", "+")
HotKeySet("{-}", "-")
HotKeySet("{*}", "*")
HotKeySet("{/}", "/")
HotKeySet("{^}", "^")
HotKeySet("{ENTER}", "=")





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Non Laddy...

Code:
; by rekah, GUI by Koda
Opt("GUIOnEventMode", 1)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; Init. Var
Global $num
#region ### START Koda GUI section ### Form=C:\Users\£Y@L\Dropbox\prog\AutoIt\Projet\Calculatrice\data\Calculatrice.kxf
Global $Calculatrice = GUICreate("Calculatrice", 235, 191, 444, 356)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Global $Button1 = GUICtrlCreateButton("1", 8, 120, 51, 33)
GUICtrlSetOnEvent(-1, "_1Pressed")
Global $Button2 = GUICtrlCreateButton("2", 56, 120, 49, 33)
GUICtrlSetOnEvent(-1, "_2Pressed")
Global $Button3 = GUICtrlCreateButton("3", 105, 120, 47, 33)
GUICtrlSetOnEvent(-1, "_3Pressed")
Global $Button4 = GUICtrlCreateButton("4", 9, 88, 47, 33)
GUICtrlSetOnEvent(-1, "_4Pressed")
Global $Button5 = GUICtrlCreateButton("5", 56, 88, 49, 33)
GUICtrlSetOnEvent(-1, "_5Pressed")
Global $Button6 = GUICtrlCreateButton("6", 104, 88, 49, 33)
GUICtrlSetOnEvent(-1, "_6Pressed")
Global $Button7 = GUICtrlCreateButton("7", 8, 56, 49, 33)
GUICtrlSetOnEvent(-1, "_7Pressed")
Global $Button8 = GUICtrlCreateButton("8", 56, 56, 49, 33)
GUICtrlSetOnEvent(-1, "_8Pressed")
Global $Button9 = GUICtrlCreateButton("9", 104, 56, 49, 33)
GUICtrlSetOnEvent(-1, "_9Pressed")
Global $Button0 = GUICtrlCreateButton("0", 8, 152, 145, 33)
GUICtrlSetOnEvent(-1, "_0Pressed")
Global $addition = GUICtrlCreateButton("+", 152, 152, 41, 33)
GUICtrlSetOnEvent(-1, "_addition")
Global $soustraction = GUICtrlCreateButton("-", 152, 120, 41, 33)
GUICtrlSetOnEvent(-1, "_soustraction")
Global $multiplication = GUICtrlCreateButton("*", 152, 88, 41, 33)
GUICtrlSetOnEvent(-1, "_multiplication")
Global $division = GUICtrlCreateButton("/", 152, 56, 41, 33)
GUICtrlSetOnEvent(-1, "_division")
Global $ecran = GUICtrlCreateEdit("", 8, 8, 217, 41, BitOR($ES_RIGHT, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
Global $result = GUICtrlCreateButton("=", 192, 56, 33, 129)
GUICtrlSetOnEvent(-1, "_resultat")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Func _0Pressed()
   $num = GUICtrlRead($ecran) & 0
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_0Pressed

Func _1Pressed()
   $num = GUICtrlRead($ecran) & 1
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_1Pressed

Func _2Pressed()
   $num = GUICtrlRead($ecran) & 2
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_2Pressed

Func _3Pressed()
   $num = GUICtrlRead($ecran) & 3
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_3Pressed

Func _4Pressed()
   $num = GUICtrlRead($ecran) & 4
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_4Pressed

Func _5Pressed()
   $num = GUICtrlRead($ecran) & 5
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_5Pressed

Func _6Pressed()
   $num = GUICtrlRead($ecran) & 6
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_6Pressed

Func _7Pressed()
   $num = GUICtrlRead($ecran) & 7
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_7Pressed

Func _8Pressed()
   $num = GUICtrlRead($ecran) & 8
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_8Pressed

Func _9Pressed()
   $num = GUICtrlRead($ecran) & 9
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_9Pressed

Func _addition()
   $num = GUICtrlRead($ecran) & " + "
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_addition

Func _soustraction()
   $num = GUICtrlRead($ecran) & " - "
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_soustraction

Func _multiplication()
   $num = GUICtrlRead($ecran) & " * "
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_multiplication

Func _division()
   $num = GUICtrlRead($ecran) & " / "
   GUICtrlSetData($ecran, $num)
EndFunc   ;==>_division

Func _resultat()
   $num = Int($num)
   MsgBox(0, "", $num)
EndFunc   ;==>_resultat

Func _Exit()
   Exit
EndFunc   ;==>_Exit

While 1
   Sleep(1)
WEnd


Si vous ne voyez toujours pas se que je veux dire, dite le moi, je m'expliquerais plus précisément...

Merci,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Le mieux est d'utiliser une input à la place de edit, et ensuite tu utilises execute

exemple :

Code:

$a=1
$v=Execute("$a+1")  ; $v is set to 2


Citation:

; by rekah, GUI by Koda
Opt("GUIOnEventMode", 1)
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
; Init. Var
Global $num
#region ### START Koda GUI section ### Form=C:\Users\£Y@L\Dropbox\prog\AutoIt\Projet\Calculatrice\data\Calculatrice.kxf
Global $Calculatrice = GUICreate("Calculatrice", 235, 191, 444, 356)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Global $Button1 = GUICtrlCreateButton("1", 8, 120, 51, 33)
GUICtrlSetOnEvent(-1, "_1Pressed")
Global $Button2 = GUICtrlCreateButton("2", 56, 120, 49, 33)
GUICtrlSetOnEvent(-1, "_2Pressed")
Global $Button3 = GUICtrlCreateButton("3", 105, 120, 47, 33)
GUICtrlSetOnEvent(-1, "_3Pressed")
Global $Button4 = GUICtrlCreateButton("4", 9, 88, 47, 33)
GUICtrlSetOnEvent(-1, "_4Pressed")
Global $Button5 = GUICtrlCreateButton("5", 56, 88, 49, 33)
GUICtrlSetOnEvent(-1, "_5Pressed")
Global $Button6 = GUICtrlCreateButton("6", 104, 88, 49, 33)
GUICtrlSetOnEvent(-1, "_6Pressed")
Global $Button7 = GUICtrlCreateButton("7", 8, 56, 49, 33)
GUICtrlSetOnEvent(-1, "_7Pressed")
Global $Button8 = GUICtrlCreateButton("8", 56, 56, 49, 33)
GUICtrlSetOnEvent(-1, "_8Pressed")
Global $Button9 = GUICtrlCreateButton("9", 104, 56, 49, 33)
GUICtrlSetOnEvent(-1, "_9Pressed")
Global $Button0 = GUICtrlCreateButton("0", 8, 152, 145, 33)
GUICtrlSetOnEvent(-1, "_0Pressed")
Global $addition = GUICtrlCreateButton("+", 152, 152, 41, 33)
GUICtrlSetOnEvent(-1, "_addition")
Global $soustraction = GUICtrlCreateButton("-", 152, 120, 41, 33)
GUICtrlSetOnEvent(-1, "_soustraction")
Global $multiplication = GUICtrlCreateButton("*", 152, 88, 41, 33)
GUICtrlSetOnEvent(-1, "_multiplication")
Global $division = GUICtrlCreateButton("/", 152, 56, 41, 33)
GUICtrlSetOnEvent(-1, "_division")
;Global $ecran = GUICtrlCreateEdit("", 8, 8, 217, 41, BitOR($ES_RIGHT, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
Global $ecran = GUICtrlCreateInput("", 8, 8, 217, 41,BitOR($ES_RIGHT,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 20, 400, 0, "MS Sans Serif")
Global $result = GUICtrlCreateButton("=", 192, 56, 33, 129)
GUICtrlSetOnEvent(-1, "_resultat")
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###
Func _0Pressed()
$num = GUICtrlRead($ecran) & 0
GUICtrlSetData($ecran, $num)
EndFunc ;==>_0Pressed

Func _1Pressed()
$num = GUICtrlRead($ecran) & 1
GUICtrlSetData($ecran, $num)
EndFunc ;==>_1Pressed

Func _2Pressed()
$num = GUICtrlRead($ecran) & 2
GUICtrlSetData($ecran, $num)
EndFunc ;==>_2Pressed

Func _3Pressed()
$num = GUICtrlRead($ecran) & 3
GUICtrlSetData($ecran, $num)
EndFunc ;==>_3Pressed

Func _4Pressed()
$num = GUICtrlRead($ecran) & 4
GUICtrlSetData($ecran, $num)
EndFunc ;==>_4Pressed

Func _5Pressed()
$num = GUICtrlRead($ecran) & 5
GUICtrlSetData($ecran, $num)
EndFunc ;==>_5Pressed

Func _6Pressed()
$num = GUICtrlRead($ecran) & 6
GUICtrlSetData($ecran, $num)
EndFunc ;==>_6Pressed

Func _7Pressed()
$num = GUICtrlRead($ecran) & 7
GUICtrlSetData($ecran, $num)
EndFunc ;==>_7Pressed

Func _8Pressed()
$num = GUICtrlRead($ecran) & 8
GUICtrlSetData($ecran, $num)
EndFunc ;==>_8Pressed

Func _9Pressed()
$num = GUICtrlRead($ecran) & 9
GUICtrlSetData($ecran, $num)
EndFunc ;==>_9Pressed

Func _addition()
$num = GUICtrlRead($ecran) & " + "
GUICtrlSetData($ecran, $num)
EndFunc ;==>_addition

Func _soustraction()
$num = GUICtrlRead($ecran) & " - "
GUICtrlSetData($ecran, $num)
EndFunc ;==>_soustraction

Func _multiplication()
$num = GUICtrlRead($ecran) & " * "
GUICtrlSetData($ecran, $num)
EndFunc ;==>_multiplication

Func _division()
$num = GUICtrlRead($ecran) & " / "
GUICtrlSetData($ecran, $num)
EndFunc ;==>_division

Func _resultat()
$num = Int($num)
GUICtrlSetData($ecran,Execute(GUICtrlRead($ecran,$num)))
EndFunc ;==>_resultat

Func _Exit()
Exit
EndFunc ;==>_Exit

While 1
Sleep(1)
WEnd





______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

C'est exactement se que je voulais!
J'ai vérifié et sa marche parfaitement.

Je cours étudier "Execute()"

Merci beaucoup,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Mon problème est résolu mais il me reste une question.
Pourquoi utiliser une input au lieu d'une edit?

Car je vient d'essayer et cela marche même si j'utilise une edit...

Je vient même d'essayer:
Code:
$num = Execute(GuictrlRead($ecran))
GUICtrlSetData($ecran, $num)

Et cela marche parfaitement.
Tu pourrais m'expliquer la différence entre ton code et le mien mis a part que le mien est moins long?


Merci,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
y a pas de différence c'est juste que chez moi ça marche avec une input.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Ah... Ok...
En tout cas mon code est beaucoup plus simple et plus court.
Merci quand même :p

£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
En quoi mettre sur deux lignes une action qui peut se faire en une ligne est plus courte... Bref....passons




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [R] Faire un calcule basé sur une chaine de caractère. 
Hello,

Ecrire une ligne est plus rapide que d'en écrire trois :p (je chipote)

Bon Bon j'arrête...

Merci,
£`/@]




______________________________________________________


*Si l'erreur est humaine c'est parce que l'humanité en est une.*

£'/@] - Anciennement rekaca
MSN Skype
Message [R] Faire un calcule basé sur une chaine de caractère. 


Montrer les messages depuis:
Ce sujet est verrouillé; vous ne pouvez pas éditer les messages ou faire de réponses. Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch