#include <EditConstants.au3>
GUICreate("", 150, 30)
$inp1 = GUICtrlCreateInput("", 5, 5, 30, -1, BitOR($ES_NUMBER, $ES_RIGHT))
$lbl = GUICtrlCreateLabel(",", 35, 5, 5)
GUICtrlSetFont(-1, 14, 700)
$inp2 = GUICtrlCreateInput("", 40, 5, 20, -1, $ES_NUMBER)
$btn = GUICtrlCreateButton("Результат", 65, 5, 70, 20)
GUISetState()
Do
Switch GUIGetMsg()
Case -3
Exit
Case $btn
MsgBox(0, "", CheckResult())
EndSwitch
Until 0
Func CheckResult()
Local $1 = GUICtrlRead($inp1)
Local $2 = GUICtrlRead($inp2)
If $1 = "" Then
$1 = "0"
Else
$1 = Int($1)
EndIf
If $2 = "" Then
$2 = "00"
ElseIf StringLen($2) = 1 Then
$2 &= "0"
EndIf
Return $1 & "," & $2
EndFunc
До этого вы запятую нажимали и вас устраивало
Не знаю, что у вас за numpad... у меня только точка.Запятая хоть есть на numpad'e
; в начале скрипта
HotKeySet("{NUMPADDOT}", "SendTab")
...
; в конце скрипта
Func SendTab()
Send("{TAB}")
EndFunc
Но разве нам кто-то запрещает использовать эту точку в качестве TAB ?
hellm сказал(а):Вот, например, если ввести k,5 программа пишет 0,00 вместо 0,50 или, скажем если набарть два раза запятую ,,5 или .,5 или ..5 программа выдает 0,00 вместо 0,50, если набирать буквы с цифрой s3 - получем на выходе 0,00 вместо 3,00
$str = ',.,5'
$str = StringRegExpReplace($str, '^\D+?(\,\d+|\d+)', '0$1')
$arr = StringRegExp($str, '^0*(\d{0,4})[.,]?(\d*).*$', 3)
$str = StringFormat('%.2f', Number($arr[0]&'.'&$arr[1],3))
$str = StringReplace($str, '.', ',')
ConsoleWrite($str)
hellm сказал(а):
^0*(\d{0,4})[.,]?(\d*).*$
^(?:0*(\d{0,4})[.,]?(\d*)|(.*))$
$str = ',.,5'
$str = StringRegExpReplace($str, '^\D*?(\,\d+|\d+)', '0$1')
$arr = StringRegExp($str, '^0*(\d{0,4})[.,]?(\d*).*$', 3)
$str = StringFormat('%.2f', Number($arr[0]&'.'&$arr[1],3))
$str = StringReplace($str, '.', ',')
ConsoleWrite($str)
'^\D*?'