On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 1511
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.02.20 17:17. Заголовок: Курсы ЦБ РФ на дату


потребовалось часто и быстро дергать курсы валют с ЦБ РФ , за пару часов написал функцию. Может кому сгодиться
на оригинальность не претендую , но работает . Возвращает массив значений на дату .
 
FUNC GetCBR( dDate)
LOCAL oHttp, cHtml, oNode, oDoc, oVal, oIterator, oCurrent
LOCAL aArray := {}
LOCAL cNumCode, cCharCode ,cNominal, cName, cValue
LOCAL aCur := {}
LOCAL cDate := StrZero(Day( dDate ),2,0) + "/" + StrZero(month( dDate ),2,0) + "/" + StrZero(year( dDate ),4,0)

oHttp := TIpClientHttp():new( "http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + cDate )
IF ! oHttp:open()
MsgBox( "Connection error:", oHttp:lastErrorMessage() )
RETURN {}
ENDIF

cHtml := oHttp:readAll()
oHttp:close()
oDoc := TXMLDocument():New( cHtml, 8 ) // см. hbxml.ch
IF oDoc:nError != 0
MsgBox( "xml file parsing error " + hb_ntos( oDoc:nError ) )
RETURN {}
ENDIF

oVal := oDoc:findfirst( "Valute" )
IF oVal == NIL
MsgBox( "no Valute found" )
RETURN {}
ENDIF

DO WHILE .T.

oIterator := TXMLIterator():New( oVal )

DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
EXIT
ELSE

switch oCurrent:cName
case "CharCode"
cCharCode := oCurrent:cData
exit
case "NumCode"
cNumCode := oCurrent:cData
exit
case "Nominal"
cNominal := oCurrent:cData
exit
case "Name"
cName := oCurrent:cData
exit
case "Value"
cValue := CharRepl(",", oCurrent:cData, ".")
exit
end switch

ENDIF

ENDDO
AAdd(aCur, {cCharCode, cNumCode, Val(cNominal), cName, Val(cValue)} )
oVal := oDoc:findnext()
IF oVal == NIL
EXIT
ENDIF
ENDDO
RETURN aCur


Спасибо: 1 
ПрофильЦитата Ответить
Ответов - 46 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 3039
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.20 17:12. Заголовок: PS Потерял ф-ю *--..


PS
Потерял ф-ю Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6582
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.20 09:56. Заголовок: SergKis пишет: Изме..


SergKis пишет:

 цитата:
Изменения ch файла показаны на версию Минигуи 2.07.
prg файл взял от hmg 20.01 и наложил из своей версии



А почему эти изменения нельзя добавить в основную версию МиниГуи ?
Это же всем тоже будет удобно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3043
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.20 11:49. Заголовок: Andrey пишет А почем..


Andrey пишет
 цитата:
А почему эти изменения нельзя добавить в основную версию МиниГуи ?


Повторю, у меня нет и не будет bcc 5.8, потому последние hmg только скачиваю.
Могу сделать, отладить в версию hmg 19.09 вместе с примером

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3045
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.20 12:57. Заголовок: SergKis пишет Могу с..


SergKis пишет
 цитата:
Могу сделать, отладить в версию hmg 19.09 вместе с примером


Тут для hmg 19.09, если интересно https://TransFiles.ru/ff1ig

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3046
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.20 14:01. Заголовок: PS В CBru.prg надо п..


PS
В CBru.prg надо поправить (в моей версии объект дает :ClientHeight уже без :StatusBar:Height)
 
nW := oWnd:ClientWidth - nX * 2
nH := oWnd:ClientHeight - nY - oWnd:StatusBar:Height
...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6584
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.20 15:59. Заголовок: SergKis пишет: Повт..


SergKis пишет:

 цитата:
Повторю, у меня нет и не будет bcc 5.8, потому последние hmg только скачиваю.
Могу сделать, отладить в версию hmg 19.09 вместе с примером


Так я беру и правлю пути под BCC 5.5.1, и всех делов то...
Под bcc 5.8 у меня тоже не всё компилирует, сборщик ресурсов глючит.

SergKis пишет:

 цитата:
Тут для hmg 19.09, если интересно


Конечно интересно.
Странно, под 20.01 (Update 3) не работает...
Собрал и вылет с ошибкой:
 
Error BASE/1066 Argument error: conditional Args: [1] = U
--------------------------------- Stack Trace ---------------------------------
Called from TSBROWSE:MOUSEMOVE(9574) in module: h_tbrowse.prg
Called from TCONTROL:HANDLEEVENT(913) in module: TControl.prg
Called from TSBROWSE:HANDLEEVENT(8687) in module: h_tbrowse.prg
Called from EVENTS(95) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1494) in module: h_windows.prg
Called from DOMETHOD(5379) in module: h_controlmisc.prg
Called from MAIN(127) in module: CBru.prg


А понял в чём ошибка. Добавил в проект h_tbrowse.prg и всё заработало...
А в стандартный МиниГуи добавить нельзя эти изменения из h_tbrowse.prg ?
Григорий, посмотри пожалуйста разницу в h_tbrowse.prg !

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1652
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.02.20 17:48. Заголовок: Andrey пишет: в ста..


Andrey пишет:

 цитата:
в стандартный МиниГуи добавить нельзя эти изменения из h_tbrowse.prg ?


Добавил эти изменения, за исключением обработки символов ";" и "\" в заголовках и персональных установок для Tbrowse, которые есть в коде.
Собрал этот пример - работает (и выглядит) идентично оригиналу.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3047
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.20 18:53. Заголовок: gfilatov2002 пишет Д..


gfilatov2002 пишет
 цитата:
Добавил эти изменения


Поправить надо
 
Function _DefineTBrowse ( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight,;
...
oBrw:InsColumn( nColNumber, oCol )

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber

oBrw:lLockFreeze := .T.

IF HB_ISNUMERIC(nW) .and. nW > 0
oBrw:GetColumn(nColNumber):nWidth := nW
ENDIF
...


Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1653
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.02.20 22:09. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправить надо


Поправил. Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6585
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.20 22:52. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Собрал этот пример - работает (и выглядит) идентично оригиналу.


Классно ! Ждем с нетерпением новую версию !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3153
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.20 20:08. Заголовок: Haz пишет Добавь к ..


Haz пишет
 цитата:
Добавь к
:GetColumn("Name"):cPicture := "@R " + Replicate("X", 50) именно @R c пробелом(иногда и по два и более делаю) , будет отступ от вертикальной линии

ЗЫ я такими шаблонами вложенность строк в структурах показываю
...
для показа шаблон со сдвигом, в :prevedit меняю на обычный, в :editexit восстанавливаю сдвиг. Сам сдвиг храниться в спец поле indent, количество пробелов в шаблоне равно indent*2


Попробовал использовать Picture "@R " + Replicate("X", 50) с заменой, как то не зашло, т.к. picture почти нигде не задаю (на default упор)
Вернулся к реализации с пробелами, но залез в CLASS TsBrowse, ввел переменную, поправил методы
Скрытый текст

Если :nCellMarginLR задан блоком кода, то передаются параметры в него
- номер колонки
- объект тсб oBrw
- объект колонки
- и тип вызова
0 - линия тсб ( :DrawLine(), :DrawSelect() )
1 - Header ( :DrawHeader() )
2 - Footer ( :DrawFooter() )
Eval( ::nCellMarginLR, nJ, Self, oColumn, nAlign, 0 )
Если возвращает число пробелов > 0, то делается margin Left or Right
Попробовал в простом примере, без блока - работает и по мне, удобно в использовании.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3154
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.20 20:15. Заголовок: PS В предпросмотре р..


PS
В предпросмотре ровненько показывает, как и в редакторе, а включение в тему и текст прыгает тудой-сюдой.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1544
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.05.20 23:26. Заголовок: SergKis пишет: зале..


SergKis пишет:

 цитата:
залез в CLASS TsBrowse, ввел переменную, поправил методы


Сергей. Давно тоже хотел зашить в методы колонки. Правда реализация через блоки показалась слишком сложной. Пошёл по пути пикчи на основании значения спец поля.
Если и вводить переменную то в клас колонки, при этом учитывая что тип может быть не только символьный. А тут кроме пикчи в голову ничего не приходит
Ps. Кстати не нравится что значения числовых полей прилипают вплотную к правой линии.... И тут тоже пикчей дополняют пробелы

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3155
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 07:11. Заголовок: Haz пишет Кстати не ..


Haz пишет
 цитата:
Кстати не нравится что значения числовых полей прилипают вплотную к правой линии....


Игорь, мне тоже не нравится такое прилипание еще и символьных (другие тоже) полей вплотную к левой линии.
Сделанная переменная на класс это, в первую очередь, исправить прижимание к границе\линии, задав 1 или 2
получается приличный вид всех колонок с DT_LEFT, DT_RIGHT. Особенно это заметно при задании цвета отрицательным
значением, т.е. обводка ячеек линией. Пока такой пример Tsb_array_2\demo3.prg и пробовал.
 цитата:

Если и вводить переменную то в клас колонки, при этом учитывая что тип может быть не только символьный


Тоже была такая мысль, но решил ограничится, пока, переменной класса, передавая в блок параметры
oColumn, nAlign и тип вызова ( 0 для строки, 1 header, 2 footer ). Т.е. для колонки с опред. именем и nAlign можно
вернуть числовое нужное смещение, для всех других, к примеру 1 для отступа от линии.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3156
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 10:32. Заголовок: PS Сделал эти измене..


PS
Сделал эти изменения только в своей версии.
Надо такое в hmg или усиливать по колонкам, а может, вообще, лишнее ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1545
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.05.20 12:15. Заголовок: SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо такое в hmg или усиливать по колонкам, а может, вообще, лишнее ?


По колонками может пригодиться. С мультилайном мысль интересная, её шаблоном не сделать.
И может слева и права иметь возможность дополнять не только пробелами, можно использовать псевдографику для рисования псевдо дерева к примеру.
То есть блок выдает не число, а строку.
Я не занимался этим вопросом серьёзно, для решения локальной задачи играл с шаблонами т. к. они независимы от типа данных. Была даже мысль добавить переменные cLPicture и cRPicture, для добавления стандартного слева справа перед применением. Потом компания купила Битрикс и пришлось с головой уйти в синхронизацию данных с этой витриной посредством rest запросов и написанием своего вэб сервера. Поэтому бросил. Может тут все выскажут свое мнение? Мне все же как-то с шаблонами справа и слева через блоки больше нравится, универсальное, но и твоё предложение тоже полезно

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3157
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 12:39. Заголовок: Haz пишет И может сл..


Haz пишет
 цитата:
И может слева и права иметь возможность дополнять не только пробелами, можно использовать псевдографику для рисования псевдо дерева к примеру.


Добавить проверку возврата на строку и добавлять ее, это реально и просто.
Делать переменные в класс колонки, пока не знаю, может в будущем. Тогда переменная из tsbrowse класса определяет
глобальную установку отступа колонок DT_LEFT, DT_RIGHT, если задано в классе колонки, то подменять общее значение
на значение полученное из колонки. Но, думается, решить это можно для колонки и от переменной из tsbrowse класса

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1546
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.05.20 17:07. Заголовок: SergKis пишет: Но, ..


SergKis пишет:

 цитата:
Но, думается, решить это можно для колонки и от переменной из tsbrowse класса


Да, согласен. Можно так для строкового значения сделать. В процессе использования придёт понимание чего не хватает

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3162
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 18:56. Заголовок: Haz Вот что получил..


Haz
Вот что получилось hmg 20.04. Изменения тсб Скрытый текст

Пример demo5.prg и h_tbrowse.prg тут https://TransFiles.ru/zkhi1

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3163
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.20 19:00. Заголовок: PS Запуск demo5.exe..


PS
Запуск
demo5.exe без параметров - работа с массивом
demo5.exe * работа с dbf
demo5.exe * 7 работа с dbf только 7 полей

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 46 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 18
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет