Войти

Показать полную графическую версию : [решено] Написать число


tehnik_srs
18-10-2011, 14:34
Добрый день!
Есть ли возможность в AutoIT "написать" числовое значение. Например, если $i = 121, то в $a должно занести 'Сто двадцать один'?

Creat0R
18-10-2011, 18:44
Примерно так (пока только до ста):

$sText = _NumToText(21)
ConsoleWrite (http://www.autoitscript.com/autoit3/docs/functions/ConsoleWrite.htm)($sText & @LF (http://www.autoitscript.com/autoit3/docs/macros.htm#@lf))

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _NumToText($iNum)
$sBasic = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)("Один|Два|Три|Четыре|Пять|Шесть|Семь|Восемь|Девять", "|")
$s10To20 = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)("Одинадцать|Двенадцать|Тринадцать|Четырнадцать|Пятнадцать|Шестнадцать|Семнадцать|Восемнадцать|Девятна дцать", "|")
$sTens = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)("Десять|Двадцать|Тридцать|Сорок|Пятьдесят|Шестьдесят|Семьдесят|Восемьдесят|Девяносто", "|")
$sHundreds = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)("Сто|Двести|Триста|Четыреста|Пятьсот|Шестьсот|Семьсот|Восемьсот|Девятьсот", "|")
$sTousends = StringSplit (http://www.autoitscript.com/autoit3/docs/functions/StringSplit.htm)("Тысяча|Тысячи|Тысяч", "|")

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $sHundreds[0]
$iNum = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($iNum, "^" & $i & "00$", $sHundreds[$i])
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 11 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) 19
$iNum = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($iNum, "^" & $i & "$", $s10To20[$i-10])
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $sTens[0]
$iNum = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($iNum, "^" & $i & "0$", $sTens[$i])
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $sTens[0]
$iNum = StringRegExpReplace (http://www.autoitscript.com/autoit3/docs/functions/StringRegExpReplace.htm)($iNum, String (http://www.autoitscript.com/autoit3/docs/functions/String.htm)($i) & "([1-9])", $sTens[$i] & " \1")
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 1 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) $sBasic[0]
$iNum = StringReplace (http://www.autoitscript.com/autoit3/docs/functions/StringReplace.htm)($iNum, String (http://www.autoitscript.com/autoit3/docs/functions/String.htm)($i), $sBasic[$i])
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)

Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $iNum
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Iska
18-10-2011, 19:52
2All: думаю, можно взять одну из многочисленных реализаций «ЧислоПрописью()» с конкурсов дополнений к Microsoft Office: "Microsoft Office" Extensions число|сумма прописью - Поиск в Google (http://www.google.ru/search?q=%22Microsoft+Office%22+Extensions+%D1%87%D0%B8%D1%81%D0%BB%D0%BE%7C%D1%81%D1%83%D0%BC%D0%BC %D0%B0+%D0%BF%D1%80%D0%BE%D0%BF%D0%B8%D1%81%D1%8C%D1%8E) и перевести на AutoIt.

tehnik_srs
19-10-2011, 09:41
Всем спасибо, попробую
Переделал немного, все работает, спс еще раз.




© OSzone.net 2001-2012