Автор Тема: Узнать курс валют по отношению к рублю  (Прочитано 1457 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1532
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#Include <Array.au3>

;$aRate[n][0] = Цифровой код валюты
;$aRate[n][1] = Буквенный код валюты
;$aRate[n][2] = Номинал
;$aRate[n][3] = Валюта
;$aRate[n][4] = Значение

$aRate = GetRateOfExchange()
If IsArray($aRate) Then
    _ArrayDisplay($aRate)
EndIf

Func GetRateOfExchange($iTimeout = 5000)

    Local $aRates[1][5], $sUrl, $iTimer, $sXml, $aCourse, $aData

    $sUrl = 'http://www.cbr.ru/scripts/XML_daily.asp'

    $iTimer = TimerInit()
    Do
        $sXml = BinaryToString(InetRead($sUrl, 1))
        If ($sXml <> '') Then
            $aCourse = StringRegExp($sXml, '(?is)<valute.*?>(.*?)</valute>', 3)
            If ((Not @error) And IsArray($aCourse) And (UBound($aCourse) > 0)) Then
                For $i = 0 To Ubound($aCourse) -1
                    $aData = StringRegExp($aCourse[$i], '<.*?>(.*?)</.*?>', 3)
                    If ((Not @error) And IsArray($aData) And (UBound($aData) > 0) And (UBound($aData) <= 5)) Then
                        $aRates[0][0] += 1
                        ReDim $aRates[$aRates[0][0] + 1][5]
                        For $x = 0 To UBound($aData) -1
                            $aRates[$aRates[0][0]][$x] = $aData[$x]
                        Next
                    EndIf
                Next
            EndIf
            ExitLoop
        EndIf
    Until (TimerDiff($iTimer) >= $iTimeout)

    Return $aRates
EndFunc
 


Русское сообщество AutoIt

Узнать курс валют по отношению к рублю
« Отправлен: Ноябрь 02, 2014, 18:45:44 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Узнать курс валют по отношению к рублю
« Ответ #1, Отправлен: Ноябрь 03, 2014, 09:33:11 »
Viktor1703,
ИМХО, так меньше действий.
Код: AutoIt [Выделить]
#include <Array.au3>

;~ HttpSetProxy(1)

Local $s_Xml, $a_Tmp, $i_Ub, $a_Ret[1]

$s_Xml = BinaryToString(InetRead('http://www.cbr.ru/scripts/XML_daily.asp', 1))
If @error Then Exit 13
$a_Tmp = StringRegExp($s_Xml, '(?i)<[a-z]+>(.+?)<', 3)
$i_Ub = UBound($a_Tmp)
If (Not $i_Ub) Or (Mod($i_Ub, 5)) Then Exit 13
ReDim $a_Ret[$i_Ub / 5 + 1][5]
For $i = 0 To $i_Ub - 1 Step 5
    $a_Ret[0][0] += 1
    For $j = 0 To 4
        $a_Ret[$a_Ret[0][0]][$j] = $a_Tmp[$i + $j]
    Next
Next
$a_Tmp = 0
_ArrayDisplay($a_Ret)


Русское сообщество AutoIt

Re: Узнать курс валют по отношению к рублю
« Ответ #1 Отправлен: Ноябрь 03, 2014, 09:33:11 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
11 Ответов
7003 Просмотров
Последний ответ Май 16, 2010, 04:54:48
от Garrett
2 Ответов
2559 Просмотров
Последний ответ Июнь 22, 2011, 12:27:07
от max110
4 Ответов
4480 Просмотров
Последний ответ Июль 08, 2011, 11:33:04
от reflexive
10 Ответов
4578 Просмотров
Последний ответ Февраль 22, 2013, 20:49:37
от AZJIO
0 Ответов
1389 Просмотров
Последний ответ Август 24, 2011, 16:58:21
от CreatoR
3 Ответов
2352 Просмотров
Последний ответ Сентябрь 27, 2011, 01:06:58
от madmasles
2 Ответов
3064 Просмотров
Последний ответ Март 09, 2012, 01:00:28
от La2Angel
3 Ответов
1534 Просмотров
Последний ответ Март 12, 2013, 20:17:51
от AZJIO
0 Ответов
1160 Просмотров
Последний ответ Март 20, 2013, 22:43:17
от inververs
11 Ответов
3003 Просмотров
Последний ответ Декабрь 21, 2014, 02:19:35
от joiner