Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: "Изъять" нужные данные из текста Добавлено: 02.06.06 10:38  

Автор вопроса:  mr.daBUTCH
Есть внутренний корпоративный веб-сайт (IIS, ASP). Хочу сделать на нем отображение курсов валют, ЕВРО и Доллара. Для начала VBScript должен прочитать страницу www.rbc.ru, это я осилил:

<%
WinHttp object

Dim WinHttpReq
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
Dim sTemp

WinHttpReq.Open "GET", "http://www.rbc.ru", False
WinHttpReq.Send
If (WinHttpReq.Status = 200) Then
    sTemp = WinHttpReq.ResponseText
    WebText = sTemp
Else
    WebText = "Failed to retrieve"
End If

%>

Теперь нужно провести поиск по полученному тексту...
1. Найти в тексте строку "USD ЦБ РФ"
2. Запомнить позицию (номер символа) начала этой искомой строки.
3. прибавить к этой позиции 15 символов (таким образом мы получим номер символа, с которого собственно и начинается курс)
4. Скопировать строку начиная с этой позиции до первого встречающегося символа "<", в переменную USDCourse


ПОМОГИТЕ ПЛЗ

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #1 Добавлено: 02.06.06 11:13
InStr$, Left$, Mid$

Ответить

Номер ответа: 2
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #2 Добавлено: 02.06.06 11:56
нельзя ли привести текст ? (я только-только учусь еще)

Ответить

Номер ответа: 3
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #3 Добавлено: 02.06.06 13:45
Разобрался, вот что получилось

но вот еще один вопрос, как можно преобразовать полученную строку "26.8868" в число 26.8868 ?


Ответить

Номер ответа: 4
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #4 Добавлено: 02.06.06 13:47
Разобрался, все получилось, есть только проблемка еще одна, можно ли как-то по простому преобразовать полученную текстовую строку "26.8868" в число 26.8868 ?

Ответить

Номер ответа: 5
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #5 Добавлено: 02.06.06 14:29
Val("47474747";)

Ответить

Номер ответа: 6
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #6 Добавлено: 02.06.06 14:47
HOOLIGAN, помоги пожалуйста разобраться, я всю голову уже сломал... Вот что у меня получилось:

Dim WinHttpReq
Set WinHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1";)
Dim sTemp
WinHttpReq.Open "GET", "http://www.rbc.ru", False
WinHttpReq.Send
If (WinHttpReq.Status = 200) Then
    sTemp = WinHttpReq.ResponseText
    WebText = sTemp
Else
    WebText = "Failed"
End If
count= InStr(Webtext, "USD ЦБ РФ";)
count_usd_date=count+61
count_usd_course=count+120
count_end=InStr(count_usd_course, Webtext, "<";)
lenght_usd=count_end-count_usd_course
if ( Len(lenght_usd) > 7) Then
    lenght_usd=7
Else
End If
usd_date=Mid(Webtext, count_usd_date, 5)
usd_course=Mid(Webtext, count_usd_course, lenght_usd)
if ( IsDate(usd_date) = False) Then
     usd_date="Ошибка"
Else
End If

val(usd_course)

Wscript.Echo usd_date, usd_course


Фишка в том, что и val и ccur говорят о несоответствии типа данных (там подтип 8), никак не могу преобразовать эту строку в currency, хелп

Ответить

Номер ответа: 7
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #7 Добавлено: 02.06.06 15:21
Я не в курсе, как обстоит дело в VBScript с типами данных.
Посмотри такие моменты: может в usd_course кроме числа влез знак $, потом попробуй заменить точку (разделитель целой и дробной части) на запятую:
val(Replace(usd_course, ".",",";))

Ответить

Номер ответа: 8
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #8 Добавлено: 02.06.06 15:26
И попробуй вывести не переменную, а непосредственно строку:
Val("26.8868";)
если выводит нормально, то попробуй явно объявить usd_course As String.
Попробуй также Val("26";) - чтобы определиться, что не нравится этому VBScript
Пробуй, анализируй.

Ответить

Номер ответа: 9
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #9 Добавлено: 02.06.06 15:50
блин, ругается даже на val("26";)
говорит несоответствие типа

Ответить

Номер ответа: 10
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #10 Добавлено: 02.06.06 15:53
и то же самое на CCur("1212.22222";), странно

Ответить

Номер ответа: 11
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #11 Добавлено: 02.06.06 16:07
Ну что, будем методом научного тыка (ибо нет у меня возможности самому попробовать)
The Val function recognizes only the period (.) as a valid decimal separator. When different decimal separators are used, as in international applications, use CDbl instead to convert a string to a number.

Значит, разделитель должен быть точкой, но в случае с Val("26";) всё ровно :(
Попробуй CDbl - она практически близнец Val'а

Ответить

Номер ответа: 12
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #12
Добавлено: 02.06.06 16:48
Смысл в таких извращениях, если курсы можно получить из XML-сервиса
Центробанка на cbr.ru?

Ответить

Номер ответа: 13
Автор ответа:
 Артем



ICQ: 312119975 

Вопросов: 0
Ответов: 6
 Профиль | | #13 Добавлено: 04.06.06 20:49
Разобрался, все получилось, есть только проблемка еще одна, можно ли как-то по простому преобразовать полученную текстовую строку "26.8868" в число 26.8868 ?


Cint("26.3";)=>26.3

Ответить

Номер ответа: 14
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #14 Добавлено: 04.06.06 22:42
Cint округлит до 26.

Ответить

Номер ответа: 15
Автор ответа:
 mr.daBUTCH



Вопросов: 1
Ответов: 7
 Профиль | | #15 Добавлено: 05.06.06 07:36
нет ли каких-нибудь примеров реализации этого ? насколько я понимаю общий смысл будет тот же, загрузка документа и поиск нужных значений в его тексте, там, кстати котировки также будут представлены в виде строк

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам