Мне тут приспичело конвертер написать, и вот когда нужно переводить валюты то я подумал, ну а курс же всё время меняется. Тут есть несколько вариантов, или каждый раз при конвертации запрашивать у пользователя текущий курс что крайне не удобно, или сверять с интернетом. Второе конечно в 100 раз удобнее, но это тоже можно сделать двумя вариантами. Или создать сайт на народе, разместить там txt файл с записанными там курсами, каждый день файл обновлять, а программа чтоб этот файл каждый раз скачиввала. Но это будет очень неудобно для меня. Или можно найти сайт где все эти курсы будут выложены. Но проблема всё равно с этим есть, я же немогу написать программе "Зайди на яндекс и посмотри что там втринадцатой
строчку написано"
. нужно чтоб программа как то вытягивала из сайта эти курсы валют. А может такая функция в пурике есть? Помогите с этим пожалуйста, как из сайта вытянуть курсы? И с какого лучше? И вот ещё что, мне бы создать хороший конвертер, так что курсов мне бы побольше. (тубрики там всякие к примеру).
Определить курсы валют на сегодняшний день
Сообщений 1 страница 17 из 17
Поделиться107.06.2011 15:04:03
Поделиться207.06.2011 15:28:44
OpenWindow(0,0,0,780,600,"",#WS_OVERLAPPEDWINDOW|#PB_Window_ScreenCentered) WebGadget(1,-200,0,980,600,"http://www.priorbank.by/r/exchange_rates/") Repeat Until WaitWindowEvent() = #PB_Event_CloseWindow
Поделиться307.06.2011 16:50:03
Спасибо, но я знаю сайты на которых есть курсы валют. Мне нужно сделать конвертер, для этого курсы валют желательно записать в переменные. Вопрос не в том как открыть сайт "http://www.priorbank.by/r/exchange_rates/", а как взять из ненго курсы и записать в переменные. Может быть это невозможно?
Поделиться407.06.2011 16:51:13
я же немогу написать программе "Зайди на яндекс и посмотри что там втринадцатойстрочку написано"
POST$ + "POST /DailyInfoWebServ/DailyInfo.asmx HTTP/1.1" + Chr(13) + Chr(10)
POST$ + "Host: www.cbr.ru" + Chr(13) + Chr(10)
POST$ + "Content-Type: text/xml; charset=utf-8" + Chr(13) + Chr(10)
POST$ + "Content-Length: "+"256"+ Chr(13) + Chr(10)
POST$ + "SOAPAction: "+Chr(34)+"http://web.cbr.ru/GetCursDynamic"+Chr(34) + Chr(13) + Chr(10)
Procedure.s PostToHost(Host$, POST$,Port)
ConnectionID = OpenNetworkConnection(Host$, Port)
If ConnectionID
SendNetworkString(ConnectionID,POST$)
Repeat : Until NetworkClientEvent(ConnectionID) = 2
Buffer = AllocateMemory(10000)
ReceiveNetworkData(ConnectionID, Buffer, 10000)
CloseNetworkConnection(ConnectionID)
ProcedureReturn PeekS(Buffer)
CloseNetworkConnection(ConnectionID)
EndIf
EndProcedure
InitNetwork()
ServerName$ = "http://www.cbr.ru"
Port = 80
Debug PostToHost(ServerName$, POST$,Port)в ответ присылают XML документ! От туда вытаскивай курсы.
Поделиться507.06.2011 16:59:43
Спасибо, а куда сохраняется этот XML документ?
Поделиться607.06.2011 17:03:31
Вот еще один сервис только лучше!
InitNetwork()
Filename$ = "C:\Curs.xml"
host$ = "http://liverss.ru/currency/"
If ReceiveHTTPFile(host$, Filename$)
Debug "Success"
Else
Debug "Failed"
EndIfПоделиться707.06.2011 17:04:57
...а куда сохраняется этот XML документ
в переменную String$ = PostToHost(ServerName$, POST$,Port)
Поделиться808.06.2011 06:06:36
Дмитрий, спасибо! С этим я разобрался, написал я уже прогу которая узнаёт текущий курс.
Поделиться924.06.2011 15:47:26
С этим я разобрался, написал я уже прогу которая узнаёт текущий курс.
Можно увидеть код?
Спасибо.
Отредактировано max (24.06.2011 15:47:59)
Поделиться1024.06.2011 16:21:04
Это работает
Procedure.l DownloadToMem ( URL.s, *lpRam, ramsize.l )
Protected agent.s, hInet.l, hData.l, Bytes.l
agent.s = "IE 6.0"
hInet.l = InternetOpen_ ( @agent.s,0,0,0,0 )
hData.l = InternetOpenUrl_ ( hInet, @URL.s, "", 0, $8000000, 0 )
If hData > 0 : InternetReadFile_ ( hData, *lpRam, ramsize.l, @Bytes.l ) : Else : Bytes = -1 : EndIf
;InternetCloseHandle_ (hFile)
InternetCloseHandle_ (hData)
InternetCloseHandle_ (hInet)
ProcedureReturn Bytes.l
EndProcedure
*mem = AllocateMemory(100000)
Bytes=DownloadToMem ( "http://liverss.ru/currency", *mem, 100000 )
If Bytes>0
If CatchXML(0, *mem, Bytes)
; Тут должен быть код разбора XML структуры и вытаскивания данных о курсе валют.
Debug "OK"
EndIf
FreeMemory(*mem)
EndIfПоделиться1124.06.2011 17:08:15
На этом сайте только доллар и евро. Хотелось-бы все валюты.
Поделиться1225.06.2011 03:36:36
http://vsevolod-s10.narod2.ru/Konverter.rar
Вот мой конвертер, и он не только валюты переводит.
Или тебе нужен сам код?
Поделиться1325.06.2011 04:11:54
Вот код конвертера валют
Procedure.l InternetConnected()
Protected dwConnectionTypes.l = #INTERNET_CONNECTION_MODEM + #INTERNET_CONNECTION_LAN + #INTERNET_CONNECTION_PROXY
ProcedureReturn InternetGetConnectedState_(@dwConnectionTypes,0)
EndProcedure
If InternetConnected()=0:MessageRequester("Ошибка","Отсутствует подключение к интернету, подключите компютер к сети и нажмите ОК"):EndIf;проверяем подключен ли комп к нету
a.s=""
Dim a.s(35)
InitNetwork()
Filename$ = "C:\Curs.xml"
host$ = "http://www.rosinvest.com/kurs/"
If ReceiveHTTPFile(host$, Filename$)
Debug "Success"
Else
Debug "Failed"
EndIf
;/\ скачали файлик с валютами
Debug "======="
;\/ разбираем его
OpenFile(0, "c:\curs.xml")
While Eof(0)=0
a=ReadString(0)
b1=FindString(a, "td><td> "+Chr(59)+"1</td><td> "+Chr(59)+"<b>Доллар США</b></td><td> "+Chr(59), 1)
If b1<>0:a(1)=a:c1=b1:EndIf
b2=FindString(a, "Доллар США</option><option value="+Chr(34)+"EUR|", 1)
If b2<>0:a(2)=a:c2=b2:EndIf
b3=FindString(a, "Австралийский доллар</b></td><td> "+Chr(59), 1)
If b3<>0:a(3)=a:c3=b3:EndIf
b4=FindString(a, "Азербайджанский манат</b></td><td> "+Chr(59), 1)
If b4<>0:a(4)=a:c4=b4:EndIf
b5=FindString(a, "Фунт стерлингов Соединенного королевства</b></td><td> "+Chr(59), 1)
If b5<>0:a(5)=a:c5=b5:EndIf
b6=FindString(a, "Армянских драмов</b></td><td> "+Chr(59), 1)
If b6<>0:a(6)=a:c6=b6:EndIf
b7=FindString(a, "Белорусских рублей</b></td><td> "+Chr(59), 1)
If b7<>0:a(7)=a:c7=b7:EndIf
b8=FindString(a, "Болгарский лев</b></td><td> "+Chr(59), 1)
If b8<>0:a(8)=a:c8=b8:EndIf
b9=FindString(a, "Бразильский реал</b></td><td> "+Chr(59), 1)
If b9<>0:a(9)=a:c9=b9:EndIf
b10=FindString(a, "Венгерских форинтов</b></td><td> "+Chr(59), 1)
If b10<>0:a(10)=a:c10=b10:EndIf
b11=FindString(a, "Датских крон</b></td><td> "+Chr(59), 1)
If b11<>0:a(11)=a:c11=b11:EndIf
b12=FindString(a, "Индийских рупий</b></td><td> "+Chr(59), 1)
If b12<>0:a(12)=a:c12=b12:EndIf
b13=FindString(a, "Казахских тенге</b></td><td> "+Chr(59), 1)
If b13<>0:a(13)=a:c13=b13:EndIf
b14=FindString(a, "Канадский доллар</b></td><td> "+Chr(59), 1)
If b14<>0:a(14)=a:c14=b14:EndIf
b15=FindString(a, "Киргизских сомов</b></td><td> "+Chr(59), 1)
If b15<>0:a(15)=a:c15=b15:EndIf
b16=FindString(a, "Китайских юаней</b></td><td> "+Chr(59), 1)
If b16<>0:a(16)=a:c16=b16:EndIf
b17=FindString(a, "Латвийский лат</b></td><td> "+Chr(59), 1)
If b17<>0:a(17)=a:c17=b17:EndIf
b18=FindString(a, "Литовский лит</b></td><td> "+Chr(59), 1)
If b18<>0:a(18)=a:c18=b18:EndIf
b19=FindString(a, "Молдавских леев</b></td><td> "+Chr(59), 1)
If b19<>0:a(19)=a:c19=b19:EndIf
b20=FindString(a, "Норвежских крон</b></td><td> "+Chr(59), 1)
If b20<>0:a(20)=a:c20=b20:EndIf
b21=FindString(a, "Польский злотый</b></td><td> "+Chr(59), 1)
If b21<>0:a(21)=a:c21=b21:EndIf
b22=FindString(a, "Новых румынских леев</b></td><td> "+Chr(59), 1)
If b22<>0:a(22)=a:c22=b22:EndIf
b23=FindString(a, "СДР (специальные права заимствования)</b></td><td> "+Chr(59), 1)
If b23<>0:a(23)=a:c23=b23:EndIf
b24=FindString(a, "Сингапурский доллар</b></td><td> "+Chr(59), 1)
If b24<>0:a(24)=a:c24=b24:EndIf
b25=FindString(a, "Таджикских сомони</b></td><td> "+Chr(59), 1)
If b25<>0:a(25)=a:c25=b25:EndIf
b26=FindString(a, "Турецкая лира</b></td><td> "+Chr(59), 1)
If b26<>0:a(26)=a:c26=b26:EndIf
b27=FindString(a, "Новых туркменских манатов</b></td><td> "+Chr(59), 1)
If b27<>0:a(27)=a:c27=b27:EndIf
b28=FindString(a, "Узбекских сумов</b></td><td> "+Chr(59), 1)
If b28<>0:a(28)=a:c28=b28:EndIf
b29=FindString(a, "Украинских гривен</b></td><td> "+Chr(59), 1)
If b29<>0:a(29)=a:c29=b29:EndIf
b30=FindString(a, "Чешских крон</b></td><td> "+Chr(59), 1)
If b30<>0:a(30)=a:c30=b30:EndIf
b31=FindString(a, "Шведских крон</b></td><td> "+Chr(59), 1)
If b31<>0:a(31)=a:c31=b31:EndIf
b32=FindString(a, "Швейцарский франк</b></td><td> "+Chr(59), 1)
If b32<>0:a(32)=a:c32=b32:EndIf
b33=FindString(a, "Южноафриканских рэндов</b></td><td> "+Chr(59), 1)
If b33<>0:a(33)=a:c33=b33:EndIf
b34=FindString(a, "Вон Республики Корея</b></td><td> "+Chr(59), 1)
If b34<>0:a(34)=a:c34=b34:EndIf
b35=FindString(a, "Японских иен</b></td><td> "+Chr(59), 1)
If b35<>0:a(35)=a:c35=b35:EndIf
Wend
k1.d=ValD(ReplaceString(Mid(a(1),c1+61,7),",","."))
k2.d=ValD(ReplaceString(Mid(a(2),c2+39,7),",","."))
k3.d=ValD(ReplaceString(Mid(a(3),c3+39,7),",","."))
k4.d=ValD(ReplaceString(Mid(a(4),c4+40,7),",","."))
k5.d=ValD(ReplaceString(Mid(a(5),c5+59,7),",","."))
k6.d=ValD(ReplaceString(Mid(a(6),c6+16+19,7),",","."))
k7.d=ValD(ReplaceString(Mid(a(7),c7+16+21,7),",","."))
k8.d=ValD(ReplaceString(Mid(a(8),c8+16+17,7),",","."))
k9.d=ValD(ReplaceString(Mid(a(9),c9+16+19,7),",","."))
k10.d=ValD(ReplaceString(Mid(a(10),c10+19+19,7),",","."))
k11.d=ValD(ReplaceString(Mid(a(11),c11+19+19-7,7),",","."))
k12.d=ValD(ReplaceString(Mid(a(12),c12+19+19-4,7),",","."))
k13.d=ValD(ReplaceString(Mid(a(13),c13+19+19-4,7),",","."))
k14.d=ValD(ReplaceString(Mid(a(14),c14+19+19-3,7),",","."))
k15.d=ValD(ReplaceString(Mid(a(15),c15+19+19-3,7),",","."))
k16.d=ValD(ReplaceString(Mid(a(16),c16+19+19-4,7),",","."))
k17.d=ValD(ReplaceString(Mid(a(17),c17+19+19-5,7),",","."))
k18.d=ValD(ReplaceString(Mid(a(18),c18+19+19-6,7),",","."))
k19.d=ValD(ReplaceString(Mid(a(19),c19+19+19-4,7),",","."))
k20.d=ValD(ReplaceString(Mid(a(20),c20+19+19-4,7),",","."))
k21.d=ValD(ReplaceString(Mid(a(21),c21+19+19-4,7),",","."))
k22.d=ValD(ReplaceString(Mid(a(22),c22+39,7),",","."))
k23.d=ValD(ReplaceString(Mid(a(23),c23+56,7),",","."))
k24.d=ValD(ReplaceString(Mid(a(24),c24+56-18,7),",","."))
k25.d=ValD(ReplaceString(Mid(a(25),c25+56-18-2,7),",","."))
k26.d=ValD(ReplaceString(Mid(a(26),c26+56-18-6,7),",","."))
k27.d=ValD(ReplaceString(Mid(a(27),c27+56-18+6,7),",","."))
k28.d=ValD(ReplaceString(Mid(a(28),c28+56-18-4,7),",","."))
k29.d=ValD(ReplaceString(Mid(a(29),c29+36,7),",","."))
k30.d=ValD(ReplaceString(Mid(a(30),c30+36-5,7),",","."))
k31.d=ValD(ReplaceString(Mid(a(31),c31+36-4,7),",","."))
k32.d=ValD(ReplaceString(Mid(a(32),c32+36,7),",","."))
k33.d=ValD(ReplaceString(Mid(a(33),c33+36+5,7),",","."))
k34.d=ValD(ReplaceString(Mid(a(34),c34+36+3,7),",","."))
k35.d=ValD(ReplaceString(Mid(a(35),c35+36-5,7),",","."))
;-----------------------------------------------------------------------------------------
OpenWindow(0,0,0,500,300,"Конвертер",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
;gadgets
StringGadget(1,10,10,100,30,"величина")
StringGadget(2,130,10,100,30,"ответ",#PB_String_ReadOnly)
ButtonGadget(3,250,10,60,30,">>")
ComboBoxGadget(4, 40, 60, 200, 30)
AddGadgetItem(4, 0,"Доллар США")
AddGadgetItem(4, 1,"Евро")
AddGadgetItem(4, 2,"Российский рубль")
AddGadgetItem(4, 3,"Австралийский доллар")
AddGadgetItem(4, 4,"Азербайджанский манат")
AddGadgetItem(4, 5,"Фунт стерлингов Соединенного королевства")
AddGadgetItem(4, 6,"Армянских драмов")
AddGadgetItem(4, 7,"Белорусских рублей")
AddGadgetItem(4, 8,"Болгарский лев")
AddGadgetItem(4, 9,"Бразильский реал")
AddGadgetItem(4, 10,"Венгерских форинтов")
AddGadgetItem(4, 11,"Датских крон")
AddGadgetItem(4, 12,"Индийских рупий")
AddGadgetItem(4, 13,"Казахских тенге")
AddGadgetItem(4, 14,"Канадский доллар")
AddGadgetItem(4, 15,"Киргизских сомов")
AddGadgetItem(4, 16,"Китайских юаней")
AddGadgetItem(4, 17,"Латвийский лат")
AddGadgetItem(4, 18,"Литовский лит")
AddGadgetItem(4, 19,"Молдавских леев")
AddGadgetItem(4, 20,"Норвежских крон")
AddGadgetItem(4, 21,"Польский злотый")
AddGadgetItem(4, 22,"Новых румынских леев")
AddGadgetItem(4, 23,"СДР (специальные права заимствования)")
AddGadgetItem(4, 24,"Сингапурский доллар")
AddGadgetItem(4, 25,"Таджикских сомони")
AddGadgetItem(4, 26,"Турецкая лира")
AddGadgetItem(4, 27,"Новых туркменских манатов")
AddGadgetItem(4, 28,"Узбекских сумов")
AddGadgetItem(4, 29,"Украинских гривен")
AddGadgetItem(4, 30,"Чешских крон")
AddGadgetItem(4, 31,"Шведских крон")
AddGadgetItem(4, 32,"Швейцарский франк")
AddGadgetItem(4, 33,"Южноафриканских рэндов")
AddGadgetItem(4, 34,"Вон Республики Корея")
AddGadgetItem(4, 35,"Японских иен")
TextGadget(5,10,65,30,30,"Из:")
ComboBoxGadget(6, 40, 110, 200, 30)
AddGadgetItem(6, 0,"Доллар США")
AddGadgetItem(6, 1,"Евро")
AddGadgetItem(6, 2,"Российский рубль")
AddGadgetItem(6, 3,"Австралийский доллар")
AddGadgetItem(6, 4,"Азербайджанский манат")
AddGadgetItem(6, 5,"Фунт стерлингов Соединенного королевства")
AddGadgetItem(6, 6,"Армянских драмов")
AddGadgetItem(6, 7,"Белорусских рублей")
AddGadgetItem(6, 8,"Болгарский лев")
AddGadgetItem(6, 9,"Бразильский реал")
AddGadgetItem(6, 10,"Венгерских форинтов")
AddGadgetItem(6, 11,"Датских крон")
AddGadgetItem(6, 12,"Индийских рупий")
AddGadgetItem(6, 13,"Казахских тенге")
AddGadgetItem(6, 14,"Канадский доллар")
AddGadgetItem(6, 15,"Киргизских сомов")
AddGadgetItem(6, 16,"Китайских юаней")
AddGadgetItem(6, 17,"Латвийский лат")
AddGadgetItem(6, 18,"Литовский лит")
AddGadgetItem(6, 19,"Молдавских леев")
AddGadgetItem(6, 20,"Норвежских крон")
AddGadgetItem(6, 21,"Польский злотый")
AddGadgetItem(6, 22,"Новых румынских леев")
AddGadgetItem(6, 23,"СДР (специальные права заимствования)")
AddGadgetItem(6, 24,"Сингапурский доллар")
AddGadgetItem(6, 25,"Таджикских сомони")
AddGadgetItem(6, 26,"Турецкая лира")
AddGadgetItem(6, 27,"Новых туркменских манатов")
AddGadgetItem(6, 28,"Узбекских сумов")
AddGadgetItem(6, 29,"Украинских гривен")
AddGadgetItem(6, 30,"Чешских крон")
AddGadgetItem(6, 31,"Шведских крон")
AddGadgetItem(6, 32,"Швейцарский франк")
AddGadgetItem(6, 33,"Южноафриканских рэндов")
AddGadgetItem(6, 34,"Вон Республики Корея")
AddGadgetItem(6, 35,"Японских иен")
TextGadget(7,10,115,30,30,"В:")
;gadgets
Repeat
event=WindowEvent()
If event=#PB_Event_Gadget
Select EventGadget()
Case 3
Select GetGadgetState(4)
Case 0:v1.d=k1:n=1
Case 1:v1.d=k2:n=1
Case 2:v1.d=1 :n=1
Case 3:v1.d=k3:n=1
Case 4:v1.d=k4:n=1
Case 5:v1.d=k5:n=1
Case 6:v1.d=k6:n=1000
Case 7:v1.d=k7:n=10000
Case 8:v1.d=k8:n=1
Case 9:v1.d=k9:n=1
Case 10:v1.d=k10:n=100
Case 11:v1.d=k11:n=10
Case 12:v1.d=k12:n=100
Case 13:v1.d=k13:n=100
Case 14:v1.d=k14:n=1
Case 15:v1.d=k15:n=100
Case 16:v1.d=k16:n=10
Case 17:v1.d=k17:n=1
Case 18:v1.d=k18:n=1
Case 19:v1.d=k19:n=10
Case 20:v1.d=k20:n=10
Case 21:v1.d=k21:n=1
Case 22:v1.d=k22:n=10
Case 23:v1.d=k23:n=1
Case 24:v1.d=k24:n=1
Case 25:v1.d=k25:n=10
Case 26:v1.d=k26:n=1
Case 27:v1.d=k27:n=10
Case 28:v1.d=k28:n=1000
Case 29:v1.d=k29:n=10
Case 30:v1.d=k30:n=10
Case 31:v1.d=k31:n=10
Case 32:v1.d=k32:n=1
Case 33:v1.d=k33:n=10
Case 34:v1.d=k34:n=1000
Case 35:v1.d=k35:n=100
EndSelect
Select GetGadgetState(6)
Case 0:v2.d=k1:n2=1
Case 1:v2.d=k2:n2=1
Case 2:v2.d=1 :n2=1
Case 3:v2.d=k3:n2=1
Case 4:v2.d=k4:n2=1
Case 5:v2.d=k5:n2=1
Case 6:v2.d=k6:n2=1000
Case 7:v2.d=k7:n2=10000
Case 8:v2.d=k8:n2=1
Case 9:v2.d=k9:n2=1
Case 10:v2.d=k10:n2=100
Case 11:v2.d=k11:n2=10
Case 12:v2.d=k12:n2=100
Case 13:v2.d=k13:n2=100
Case 14:v2.d=k14:n2=1
Case 15:v2.d=k15:n2=100
Case 16:v2.d=k16:n2=10
Case 17:v2.d=k17:n2=1
Case 18:v2.d=k18:n2=1
Case 19:v2.d=k19:n2=10
Case 20:v2.d=k20:n2=10
Case 21:v2.d=k21:n2=1
Case 22:v2.d=k22:n2=10
Case 23:v2.d=k23:n2=1
Case 24:v2.d=k24:n2=1
Case 25:v2.d=k25:n2=10
Case 26:v2.d=k26:n2=1
Case 27:v2.d=k27:n2=10
Case 28:v2.d=k28:n2=1000
Case 29:v2.d=k29:n2=10
Case 30:v2.d=k30:n2=10
Case 31:v2.d=k31:n2=10
Case 32:v2.d=k32:n2=1
Case 33:v2.d=k33:n2=10
Case 34:v2.d=k34:n2=1000
Case 35:v2.d=k35:n2=100
EndSelect
;в рубли
rub.d=(ValD(GetGadgetText(1))/n)*v1
If GetGadgetState(6)=2:SetGadgetText(2,StrF(rub))
Else
otv.d=rub/(v2/n2)
SetGadgetText(2,StrF(otv))
EndIf
EndSelect
EndIf
Until event=#PB_Event_CloseWindowПоделиться1425.06.2011 15:01:29
Несколько громоздкий код.
Поделиться1526.06.2011 02:07:06
Зато понятный
Поделиться1626.06.2011 12:39:50
Правильнее все же использовать XML парсер, а не FindString.
Поделиться1726.06.2011 15:37:04
Вот код конвертера валют
Спасибо.