Мне тут приспичело конвертер написать, и вот когда нужно переводить валюты то я подумал, ну а курс же всё время меняется. Тут есть несколько вариантов, или каждый раз при конвертации запрашивать у пользователя текущий курс что крайне не удобно, или сверять с интернетом. Второе конечно в 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
Вот код конвертера валют
Спасибо.