Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Может кому пригодится (или может кто мне покажет более правильное/простое решение), вот функция для получения числа разделённого запятыми (когда то на батнике пробовал решить, получилось - но кривовато, а тут совсем другое дело )...

Код: Выделить весь код
$MyNumber = 212347525 ;> 212,347,525

MsgBox(64, "Внимание", "Конвертировали обычное число: " & @LF & @LF & _
    $MyNumber & @LF & @LF & _
    "В строку (числовую) разделённую запятыми: " & @LF & @LF & GetComasNumber($MyNumber))

Func GetComasNumber($iNumber)
    $iNumber = Number($iNumber)
    If $iNumber <= 1000 Then Return $iNumber

    Local $iLength = StringLen($iNumber)
    Local $RetStr = '', $iN

    For $i = 1 To $iLength
        $iN = StringMid($iNumber, $i, 1)
        If IsInt(($iLength - $i) / 3) And ($iLength - $i) / 3 > 0 Then
            $RetStr &= $iN & ','
        Else
            $RetStr &= $iN
        EndIf
    Next
    Return $RetStr
EndFunc
amel27,
Цитата:
в общем случае нет
А жаль - Я как раз написал собственный редактор реестра, он правда медленно работает, но полагаю что даже если у кого то и хватит терпения дождаться окончания считывания всех строчек с реестра (у меня не хватает ), то он увидит не полный список, или скрипт выпадет с ошибкой о рекурсивном вызове подфункции.

Цитата:
можно сделать короче (одной строчкой)
О, как это одной строчкой сделать? (скорость не критична в моём случае, проверяться будет вне цикла).

Цитата:
только если $Nmber есть степень двойки, т.е. в двоичном виде есть последовательность "единичек"
У меня число (в этом конкретном случае), всегда 15, т.е нужно проверить, если исло болльше чем 15, то вернуть 15, если меньше, то вернуть то которое меньше (это подходит под критерии сказанного? я просто в математике совсем не силён)... понимаю что решать подобные задачи для конкретного случая нет особого смысла, но мне больше для расширения своего круга знании, вот такие мелочи иногда помагают решить серъёзную проблему.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 12:12, 18-10-2007 | #615