Вверх ↑
Этот топик читают: Гость
Ответов: 787
Рейтинг: 168
#1: 2023-08-06 19:30:35 ЛС | профиль | цитата
Способ передачи данных и объектов между программами с помощью VBJScript.
Сначала запустите первый скрипт, а потом второй.
https://forum.hiasm.com/getfile/39620

--- Добавлено в 2023-08-06 19:33:01

Старый, Добрый, "Ламповый" MailSlot.
Передача на MailSlot_Server разными способами.
https://forum.hiasm.com/getfile/39621

--- Добавлено в 2023-08-06 19:34:59

Ковёр
Умножение строки на число (для windows10)
Add(MainForm,2953706,91,77)
{
Width=728
Height=483
Caption="Ковёр"
link(onCreate,10073478:doString,[])
}
Add(FormatStr,10073478,147,91)
{
Mask="\r\n 1..%2 | ForEach-Object {\r\n '_ \ \ \_/ __' * %1\r\n ' \ \ \___/ _' * %1\r\n '\ \ \_____/ ' * %1\r\n '/ / / ___ \_' * %1\r\n '_/ / / _ \__' * %1\r\n '__/ / / \___' * %1\r\n }"
link(onFString,15758195:doConsoleExec,[])
link(Str1,13589343:Text,[])
link(Str2,10687326:Text,[(160,68)(167,68)])
}
Add(WinExec,15758195,203,77)
{
FileName="powershell"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
link(onConsoleResult,10694890:doAdd,[])
}
Add(Memo,10694890,259,91)
{
Width=712
Height=444
Align=5
Font=[Lucida Console,8,0,0,204]
ScrollBars=3
}
Add(VisualStrings,13589343,147,21)
{
Lines=#1:8|
}
Add(VisualStrings,10687326,161,42)
{
Lines=#1:6|
}


--- Добавлено в 2023-08-06 19:37:52

Для руководителей и специалистов кадровой службы.

Add(Label,9948857,133,238)
{
Left=20
Top=25
Width=300
Height=65
Font=[MS Sans Serif,12,0,0,1]
Caption="Вы довольны зарплатой, которую\r\n платит Вам наша компания"
AutoSize=1
Alignment=2
}
Add(MainForm,2953706,189,168)
{
Width=358
Height=180
Caption=" Опрос"
BorderStyle=1
Position=1
}
Add(Button,551076,217,231)
{
Left=220
Top=90
Width=60
Height=25
Font=[MS Sans Serif,12,0,0,1]
Caption="Нет"
Point(doLeft)
Point(doTop)
Point(Width)
Point(Height)
Point(onMouseEnter)
Point(onMouseMove)
link(onMouseEnter,6156726:doEvent1,[])
link(onMouseMove,6156726:doEvent2,[])
}
Add(Random,10993960,294,238)
{
Max=300
link(onRandom,551076:doLeft,[(333,244)(333,223)(207,223)(207,237)])
}
Add(Random,7969335,343,245)
{
Max=130
link(onRandom,551076:doTop,[(382,251)(382,286)(207,286)(207,244)])
}
Add(Hub,6156726,266,238)
{
InCount=2
link(onEvent1,10993960:doRandom,[])
link(onEvent2,7969335:doRandom,[])
}
Add(Message,3134393,140,189)
{
Message="Мы не сомневались в этом и делаем всё для того, чтобы наши сотрудники были рады работать в нашей компании. "
Caption="Спасибо"
link(onMessage,2953706:doClose,[])
}
Add(Button,15596083,91,189)
{
Left=70
Top=90
Width=60
Height=25
Font=[MS Sans Serif,12,0,0,1]
Caption="Да"
DefaultBtn=0
Point(doLeft)
Point(doTop)
link(onClick,3134393:doMessage,[])
}


Редактировалось 4 раз(а), последний 2023-08-06 19:37:52
карма: 15

0
файлы: 2обмен данными и объектами между скриптами.zip [1.8KB] [270], mailslot_test.zip [2.6KB] [286]
Ответов: 787
Рейтинг: 168
#2: 2023-08-07 20:55:12 ЛС | профиль | цитата
Планировщик заданий. Создание, удаление и др..
Схема создаёт задание - показывать тестовое сообщение каждые 5 мин.

Add(MainForm,10111111,98,91)
{
Width=1023
}
Add(WinExec,1234677,287,196)
{
FileName="taskschd.msc"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
}
Add(Menu,260512,154,91)
{
Menu=#39:1. Запланировать событие "Напоминание" |36:2. Удаление запланированного события|38:3. Список всех запланированных событий|22:4. Запуск планировщика|
Point(onSelectNum)
link(onSelectNum,11455188:doEvent,[])
}
Add(IndexToChanel,11455188,210,98)
{
Count=4
link(onEvent1,895287:doString,[(263,104)(263,69)])
link(onEvent2,2494332:doString,[])
link(onEvent3,5503462:doString,[(277,118)(277,153)])
link(onEvent4,1234677:doShellExec,[(256,125)(256,209)])
}
Add(Memo,7467944,504,140)
{
Width=1007
Height=261
Align=5
Font=[Lucida Console,10,0,0,204]
ScrollBars=3
}
Add(Charset,13686885,448,140)
{
link(onCharset,7467944:doAdd,[])
}
Add(FormatStr,2494332,287,105)
{
Mask="/Delete /TN "Test Task" /F"
link(onFString,9936378:doWork2,[])
}
Add(WinExec,10368304,399,126)
{
FileName="SchTasks"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,13686885:doCharset,[])
}
Add(FormatStr,895287,287,63)
{
Mask="/Create /SC MINUTE /MO 5 /TN "Test Task" /TR "msg * Тестовое уведомление""
link(onFString,9936378:doWork1,[(340,69)])
}
Add(HubEx,9936378,336,105)
{
link(onEvent,13590992:doEvent1,[])
}
Add(FormatStr,5503462,287,147)
{
Mask="/Query"
link(onFString,9936378:doWork3,[(340,153)])
}
Add(Hub,13590992,357,105)
{
link(onEvent1,7467944:doClear,[(487,111)(487,153)])
link(onEvent2,10368304:doConsoleExec,[(389,118)(389,146)])
}

карма: 15

1
Голосовали:envoy_sky
Ответов: 787
Рейтинг: 168
#3: 2023-08-08 18:30:03 ЛС | профиль | цитата
Изменение масштаба экрана и текста.
Powershell

Add(Memo,15031198,378,63)
{
Left=550
Top=160
Align=5
Strings=#25:Установка маштаба экрана.|
ScrollBars=3
}
Add(MainForm,2953706,63,56)
{
Caption="Screen Scaling"
}
Add(ComboBox,6230396,119,56)
{
Left=15
Top=30
Width=130
Height=21
Align=2
Strings=#4:100%|5:125% |5:150% |5:175% |
Text=""
link(onClick,5006580:doString,[])
}
Add(FormatStr,5006580,189,63)
{
DataCount=1
Mask="$source = @’\r\n [DllImport("""user32.dll""", EntryPoint = """SystemParametersInfo""")]\r\n public static extern bool SystemParametersInfo(\r\n uint uiAction,\r\n uint uiParam,\r\n uint pvParam,\r\n uint fWinIni);\r\n‘@\r\n$apicall = Add-Type -MemberDefinition $source -Name WinAPICall -Namespace SystemParamInfo –PassThru\r\n$apicall::SystemParametersInfo(0x009F, %1, $null, 1)"
link(onFString,357619:doConsoleExec,[])
}
Add(WinExec,357619,245,49)
{
FileName="powershell"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,108940:doWork2,[])
link(onConsoleError,108940:doWork3,[(305,76)])
}
Add(Charset,14483954,322,63)
{
link(onCharset,15031198:doAdd,[])
}
Add(HubEx,108940,301,63)
{
link(onEvent,14483954:doCharset,[])
}

InlineCode

Add(MainForm,2953706,49,63)
{
Width=296
Height=147
}
Add(InlineCode,13133648,147,70)
{
WorkPoints=#7:doScale|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|7: public|47: procedure doScale(var dt:TData; idx:word);|5: end;|0:|73:function SystemParametersInfo(uiAction,uiParam:cardinal; pvParam:pointer;|39: fWinIni:cardinal) : cardinal; stdcall;|0:|14:implementation|0:|82:function SystemParametersInfo; external 'user32.dll' name 'SystemParametersInfoA';|0:|30:procedure THiAsmClass.doScale;|5:begin|51: SystemParametersInfo(159, ToInteger(dt), nil, 1);|4:end;|0:|4:end.|
}
Add(ComboBox,6230396,98,63)
{
Width=280
Height=21
Align=2
Strings=#4:100%|5:125% |5:150% |5:175% |
Text=""
link(onClick,13133648:doScale,[])
}
Add(Memo,15031198,91,126)
{
Top=21
Width=280
Height=87
Align=5
Strings=#25:Установка маштаба экрана.|
ScrollBars=3
}

Настройки масштаба установленные в системе.

Add(MainForm,2953706,70,105)
{
link(onCreate,14663730:doRead,[])
}
Add(Memo,12829330,287,77)
{
Left=550
Top=160
Align=5
ScrollBars=3
}
Add(Registry,14663730,126,119)
{
HKey=1
Key="Control Panel\Desktop"
Value="LogPixels"
DataType=0
link(onRead,9807490:doGetIndex,[])
}
Add(StrList,9807490,182,91)
{
Strings=#2:96|3:120|3:144|3:192|0:|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,11596985:doGetString,[])
}
Add(StrList,11596985,231,70)
{
Strings=#6:100 % |6:125 % |6:150 % |6:200 % |0:|
Point(doGetString)
Point(onGetString)
link(onGetString,12829330:doAdd,[])
}

Дожил до седин и только сегодня узнал, что команды ms-settings: можно запускать из WebBrowser.

Add(MainForm,2953706,21,105)
{
}
Add(WebBrowser,7714425,91,105)
{
Left=200
Top=180
Visible=1
URL="ms-settings:display"
}

Другие команды ms-settings можно посмотреть здесь - https://windowsnotes.ru/windows-10/komandy-ms-settings-dlya-bystrogo-dostupa-k-nastrojkam-windows-10/

Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi)
карма: 15

0
Ответов: 787
Рейтинг: 168
#4: 2023-08-09 13:23:31 ЛС | профиль | цитата
Возможно, кому-то понадобится. Создание HTA приложения из MTStrTbl.
https://forum.hiasm.com/getfile/39622
карма: 15

0
файлы: 1MTtbl to HTA.zip [6.4KB] [285]
Ответов: 8923
Рейтинг: 823
#5: 2023-08-09 15:48:36 ЛС | профиль | цитата
Gunta, MTStrTbl это творение nesco, самый большой код элемента в HiAsm
По масштабу -- у меня сейчас "отслоение сетчатки" с уменьшением чувствительности и большими искажениями. Использую масштаб в браузере и приложениях, где есть, а где нет экранную "лупу". Опробую и ваше, отпишусь позже
карма: 19

0
Ответов: 787
Рейтинг: 168
#6: 2023-08-09 18:49:27 ЛС | профиль | цитата
Леонид писал(а):
MTStrTbl это творение nesco, самый большой код элемента в HiAsm

Я это знаю и скажу больше, вся группа компонентов MTStrTbl мне очень нравится, и я часто использую их и по работе в том числе.
Вот пример работы с файлами CSV как с базой данных. Для доступа к данным в файле CSV используется Microsoft.Jet.OLEDB.4.0
https://forum.hiasm.com/getfile/39623
ЕСЛИ в файле CSV символ разделитель не запятая то нужно использовать файл schema.ini, который должен находится рядом с текстовым файлом (CSV). Все ссылки в схеме.

Редактировалось 1 раз(а), последний 2023-08-09 18:50:02
карма: 15

0
файлы: 1txt file by sql.zip [4KB] [266]
Ответов: 311
Рейтинг: 26
#7: 2023-08-10 11:49:28 ЛС | профиль | цитата
Gunta писал(а):
Дожил до седин и только сегодня узнал, что команды ms-settings: можно запускать из WebBrowser.

В системе андроид тоже очень много можно запустить из WebBrowser.
карма: 2
0
Ответов: 787
Рейтинг: 168
#8: 2023-08-12 07:21:49 ЛС | профиль | цитата
Запуск браузеров Google Chrome и Microsoft Edge (и других на основе Сhromium) в режиме киоск.
При первом запуске программы рядом в папке temp создаётся независимый профиль со всеми настройками и другими данными.
https://forum.hiasm.com/getfile/39624
Режим киоска может пригодиться, например, для запуска на корпоративном оборудовании динамического сайта-визитки компании, для организации в увеселительном заведении караоке, музыкального автомата, игр и прочих развлечений на базе веб-сервисов, в качестве веб-приложения ТВ-версии YouTube, какого-то онлайн-кинотеатра, соцсети, да любого сервиса. Также в рамках родительского контроля, чтобы дети имели доступ к ограниченным веб-ресурсам.
карма: 15

1
файлы: 1Chrome kiosk.zip [878B] [281]
Голосовали:Flapiotun
Ответов: 1291
Рейтинг: 47
#9: 2023-08-20 14:11:56 ЛС | профиль | цитата
Gunta, благодарю, не знал про HTA. Только в виде WebApps.

--- Добавлено в 2023-08-20 14:26:51

Все, похоже лимит на загрузку исчерпан - ничего не запгрузить, даже 115 Кб. Пишет отрицательный лимит в - 500 кб с лишним.. Интересно, только у меня так? Поэтому, вот Леонид, держи. Программа лупы, довольно удобная вышла. Это даже не лупа, а микроскоп какой-то) 3 года назад писал. Сам скоро буду использовать, зрение уже +2.5, не доставляет удовольствия работать за компом как раньше...
https://disk.yandex.ru/d/XCXhQoAB89l8Hg

Редактировалось 3 раз(а), последний 2023-08-20 14:29:05
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 787
Рейтинг: 168
#10: 2023-08-30 06:30:49 ЛС | профиль | цитата
Пример парсера JSON в таблицу MTStrTbl с помощью SQLite
Add(MainForm,2953706,21,84)
{
Width=649
Point(onClose)
link(onCreate,7361690:doOpen,[])
link(onClose,7361690:doClose,[])
}
Add(DS_SQLite,7361690,70,98)
{
Name="js"
FileName=":memory:"
link(onOpen,16774519:doString,[])
}
Add(DSC_Query,7586605,224,98)
{
SQL="select\r\n json_extract(value, '$.ID') as ID\r\n ,json_extract(value, '$.NumCode') as NumCode\r\n ,json_extract(value, '$.CharCode') as CharCode\r\n ,json_extract(value, '$.Nominal') as Nominal\r\n ,json_extract(value, '$.Name') as Name\r\n ,json_extract(value, '$.Value') as Value\r\n ,json_extract(value, '$.Previous') as Previous\r\nfrom\r\n(select *\r\nfrom cbr, json_each(cbr.data, '$.Valute'))\r\n; "
DSManager="js"
link(onQuery,9610740:doAddRow,[])
link(onColumns,9610740:doAddCols,[])
}
Add(DSC_Exec,2918495,175,98)
{
DSManager="js"
link(onExec,7586605:doQuery,[])
}
Add(FormatStr,16774519,126,98)
{
DataCount=1
Mask="CREATE TABLE cbr (id INTEGER PRIMARY KEY, data JSON);\r\n\r\nINSERT INTO cbr (id, data) VALUES (1, json('%1'));"
link(onFString,2918495:doExec,[])
link(Str1,7461844:Text,[])
}
Add(MTStrTbl,856637,21,35)
{
Width=633
Height=261
Align=5
Name="asd"
}
Add(MST_DB,9610740,280,98)
{
MSTControl="asd"
link(onChange,2466544:doColAction,[])
}
Add(MST_ColAction,2466544,329,98)
{
Action=9
Index=-2
MSTControl="asd"
}
Add(StrList,7461844,126,42)
{
Strings=#1:{|40: "Date": "2023-08-29T11:30:00+03:00",|48: "PreviousDate": "2023-08-26T11:30:00+03:00",|84: "PreviousURL": "\/\/www.cbr-xml-daily.ru\/archive\/2023\/08\/26\/daily_json.js",|45: "Timestamp": "2023-08-29T14:00:00+03:00",|15: "Valute": {|16: "AUD": {|27: "ID": "R01010",|29: "NumCode": "036",|30: "CharCode": "AUD",|25: "Nominal": 1,|43: "Name": "Австралийский доллар",|29: "Value": 61.3979,|31: "Previous": 60.7765|10: },|16: "AZN": {|28: "ID": "R01020A",|29: "NumCode": "944",|30: "CharCode": "AZN",|25: "Nominal": 1,|44: "Name": "Азербайджанский манат",|29: "Value": 56.1598,|31: "Previous": 55.7128|10: },|16: "GBP": {|27: "ID": "R01035",|29: "NumCode": "826",|30: "CharCode": "GBP",|25: "Nominal": 1,|63: "Name": "Фунт стерлингов Соединенного королевства",|30: "Value": 120.7526,|32: "Previous": 119.7914|10: },|16: "AMD": {|27: "ID": "R01060",|29: "NumCode": "051",|30: "CharCode": "AMD",|27: "Nominal": 100,|39: "Name": "Армянских драмов",|29: "Value": 24.7342,|30: "Previous": 24.538|10: },|16: "BYN": {|28: "ID": "R01090B",|29: "NumCode": "933",|30: "CharCode": "BYN",|25: "Nominal": 1,|40: "Name": "Белорусский рубль",|29: "Value": 29.8938,|31: "Previous": 29.8615|10: },|16: "BGN": {|27: "ID": "R01100",|29: "NumCode": "975",|30: "CharCode": "BGN",|25: "Nominal": 1,|37: "Name": "Болгарский лев",|29: "Value": 52.7585,|31: "Previous": 52.4922|10: },|16: "BRL": {|27: "ID": "R01115",|29: "NumCode": "986",|30: "CharCode": "BRL",|25: "Nominal": 1,|39: "Name": "Бразильский реал",|29: "Value": 19.5763,|29: "Previous": 19.43|10: },|16: "HUF": {|27: "ID": "R01135",|29: "NumCode": "348",|30: "CharCode": "HUF",|27: "Nominal": 100,|42: "Name": "Венгерских форинтов",|28: "Value": 26.923,|31: "Previous": 26.6771|10: },|16: "VND": {|27: "ID": "R01150",|29: "NumCode": "704",|30: "CharCode": "VND",|29: "Nominal": 10000,|41: "Name": "Вьетнамских донгов",|29: "Value": 39.8463,|31: "Previous": 39.5588|10: },|16: "HKD": {|27: "ID": "R01200",|29: "NumCode": "344",|30: "CharCode": "HKD",|25: "Nominal": 1,|41: "Name": "Гонконгский доллар",|29: "Value": 12.1915,|31: "Previous": 12.0975|10: },|16: "GEL": {|27: "ID": "R01210",|29: "NumCode": "981",|30: "CharCode": "GEL",|25: "Nominal": 1,|38: "Name": "Грузинский лари",|29: "Value": 36.3024,|31: "Previous": 35.8933|10: },|16: "DKK": {|27: "ID": "R01215",|29: "NumCode": "208",|30: "CharCode": "DKK",|25: "Nominal": 1,|36: "Name": "Датская крона",|29: "Value": 13.8435,|31: "Previous": 13.7736|10: },|16: "AED": {|27: "ID": "R01230",|29: "NumCode": "784",|30: "CharCode": "AED",|25: "Nominal": 1,|33: "Name": "Дирхам ОАЭ",|29: "Value": 25.9928,|31: "Previous": 25.7859|10: },|16: "USD": {|27: "ID": "R01235",|29: "NumCode": "840",|30: "CharCode": "USD",|25: "Nominal": 1,|33: "Name": "Доллар США",|29: "Value": 95.4717,|31: "Previous": 94.7117|10: },|16: "EUR": {|27: "ID": "R01239",|29: "NumCode": "978",|30: "CharCode": "EUR",|25: "Nominal": 1,|27: "Name": "Евро",|30: "Value": 103.2434,|32: "Previous": 102.2586|10: },|16: "EGP": {|27: "ID": "R01240",|29: "NumCode": "818",|30: "CharCode": "EGP",|26: "Nominal": 10,|40: "Name": "Египетских фунтов",|29: "Value": 30.9014,|31: "Previous": 30.6554|10: },|16: "INR": {|27: "ID": "R01270",|29: "NumCode": "356",|30: "CharCode": "INR",|26: "Nominal": 10,|38: "Name": "Индийских рупий",|29: "Value": 11.4868,|31: "Previous": 11.3986|10: },|16: "IDR": {|27: "ID": "R01280",|29: "NumCode": "360",|30: "CharCode": "IDR",|29: "Nominal": 10000,|42: "Name": "Индонезийских рупий",|28: "Value": 62.412,|31: "Previous": 62.0938|10: },|16: "KZT": {|27: "ID": "R01335",|29: "NumCode": "398",|30: "CharCode": "KZT",|27: "Nominal": 100,|42: "Name": "Казахстанских тенге",|29: "Value": 20.7471,|31: "Previous": 20.4986|10: },|16: "CAD": {|27: "ID": "R01350",|29: "NumCode": "124",|30: "CharCode": "CAD",|25: "Nominal": 1,|39: "Name": "Канадский доллар",|29: "Value": 70.1688,|31: "Previous": 69.8206|10: },|16: "QAR": {|27: "ID": "R01355",|29: "NumCode": "634",|30: "CharCode": "QAR",|25: "Nominal": 1,|37: "Name": "Катарский риал",|29: "Value": 26.2285,|31: "Previous": 26.0197|10: },|16: "KGS": {|27: "ID": "R01370",|29: "NumCode": "417",|30: "CharCode": "KGS",|26: "Nominal": 10,|39: "Name": "Киргизских сомов",|29: "Value": 10.8185,|31: "Previous": 10.7359|10: },|16: "CNY": {|27: "ID": "R01375",|29: "NumCode": "156",|30: "CharCode": "CNY",|25: "Nominal": 1,|37: "Name": "Китайский юань",|28: "Value": 13.055,|30: "Previous": 12.972|10: },|16: "MDL": {|27: "ID": "R01500",|29: "NumCode": "498",|30: "CharCode": "MDL",|26: "Nominal": 10,|38: "Name": "Молдавских леев",|29: "Value": 53.5368,|30: "Previous": 53.055|10: },|16: "NZD": {|27: "ID": "R01530",|29: "NumCode": "554",|30: "CharCode": "NZD",|25: "Nominal": 1,|44: "Name": "Новозеландский доллар",|29: "Value": 56.4906,|31: "Previous": 56.0504|10: },|16: "NOK": {|27: "ID": "R01535",|29: "NumCode": "578",|30: "CharCode": "NOK",|26: "Nominal": 10,|38: "Name": "Норвежских крон",|29: "Value": 89.1534,|31: "Previous": 88.8819|10: },|16: "PLN": {|27: "ID": "R01565",|29: "NumCode": "985",|30: "CharCode": "PLN",|25: "Nominal": 1,|38: "Name": "Польский злотый",|29: "Value": 23.0619,|30: "Previous": 22.926|10: },|16: "RON": {|28: "ID": "R01585F",|29: "NumCode": "946",|30: "CharCode": "RON",|25: "Nominal": 1,|36: "Name": "Румынский лей",|29: "Value": 20.9006,|31: "Previous": 20.6939|10: },|16: "XDR": {|27: "ID": "R01589",|29: "NumCode": "960",|30: "CharCode": "XDR",|25: "Nominal": 1,|60: "Name": "СДР (специальные права заимствования)",|30: "Value": 126.6757,|32: "Previous": 125.9552|10: },|16: "SGD": {|27: "ID": "R01625",|29: "NumCode": "702",|30: "CharCode": "SGD",|25: "Nominal": 1,|42: "Name": "Сингапурский доллар",|29: "Value": 70.4172,|31: "Previous": 69.7743|10: },|16: "TJS": {|27: "ID": "R01670",|29: "NumCode": "972",|30: "CharCode": "TJS",|26: "Nominal": 10,|40: "Name": "Таджикских сомони",|29: "Value": 87.0989,|31: "Previous": 86.4079|10: },|16: "THB": {|27: "ID": "R01675",|29: "NumCode": "764",|30: "CharCode": "THB",|26: "Nominal": 10,|40: "Name": "Таиландских батов",|29: "Value": 27.1426,|31: "Previous": 27.0022|10: },|16: "TRY": {|28: "ID": "R01700J",|29: "NumCode": "949",|30: "CharCode": "TRY",|26: "Nominal": 10,|35: "Name": "Турецких лир",|29: "Value": 36.1227,|31: "Previous": 34.9256|10: },|16: "TMT": {|28: "ID": "R01710A",|29: "NumCode": "934",|30: "CharCode": "TMT",|25: "Nominal": 1,|46: "Name": "Новый туркменский манат",|29: "Value": 27.2776,|31: "Previous": 27.0605|10: },|16: "UZS": {|27: "ID": "R01717",|29: "NumCode": "860",|30: "CharCode": "UZS",|29: "Nominal": 10000,|38: "Name": "Узбекских сумов",|29: "Value": 79.0977,|31: "Previous": 78.6053|10: },|16: "UAH": {|27: "ID": "R01720",|29: "NumCode": "980",|30: "CharCode": "UAH",|26: "Nominal": 10,|40: "Name": "Украинских гривен",|29: "Value": 25.8393,|31: "Previous": 25.6518|10: },|16: "CZK": {|27: "ID": "R01760",|29: "NumCode": "203",|30: "CharCode": "CZK",|26: "Nominal": 10,|35: "Name": "Чешских крон",|29: "Value": 42.7683,|31: "Previous": 42.5403|10: },|16: "SEK": {|27: "ID": "R01770",|29: "NumCode": "752",|30: "CharCode": "SEK",|26: "Nominal": 10,|36: "Name": "Шведских крон",|29: "Value": 86.5776,|30: "Previous": 85.911|10: },|16: "CHF": {|27: "ID": "R01775",|29: "NumCode": "756",|30: "CharCode": "CHF",|25: "Nominal": 1,|40: "Name": "Швейцарский франк",|30: "Value": 107.9752,|32: "Previous": 106.9464|10: },|16: "RSD": {|28: "ID": "R01805F",|29: "NumCode": "941",|30: "CharCode": "RSD",|27: "Nominal": 100,|39: "Name": "Сербских динаров",|29: "Value": 88.0414,|31: "Previous": 87.1011|10: },|16: "ZAR": {|27: "ID": "R01810",|29: "NumCode": "710",|30: "CharCode": "ZAR",|26: "Nominal": 10,|45: "Name": "Южноафриканских рэндов",|29: "Value": 51.0609,|31: "Previous": 50.7663|10: },|16: "KRW": {|27: "ID": "R01815",|29: "NumCode": "410",|30: "CharCode": "KRW",|28: "Nominal": 1000,|43: "Name": "Вон Республики Корея",|29: "Value": 72.1412,|31: "Previous": 71.4697|10: },|16: "JPY": {|27: "ID": "R01820",|29: "NumCode": "392",|30: "CharCode": "JPY",|27: "Nominal": 100,|35: "Name": "Японских иен",|29: "Value": 65.1728,|31: "Previous": 64.8266|9: }|5: }|1:}|
}

Пример парсера JSON в кортеж (tree) TreeViewTrain с помощью SQLite
Add(MainForm,2953706,28,84)
{
Width=649
Point(onClose)
link(onCreate,7361690:doOpen,[])
link(onClose,7361690:doClose,[])
}
Add(DS_SQLite,7361690,77,98)
{
Name="js"
FileName=":memory:"
link(onOpen,16774519:doString,[])
}
Add(DSC_Query,7586605,224,98)
{
SQL="select *, key || ' : ' || value\r\nfrom cbr, json_tree(cbr.data, '$')\r\n; "
DSManager="js"
link(onQuery,9833059:doAddNode,[])
}
Add(DSC_Exec,2918495,175,98)
{
DSManager="js"
link(onExec,7586605:doQuery,[])
}
Add(FormatStr,16774519,126,98)
{
DataCount=1
Mask="CREATE TABLE cbr (id INTEGER PRIMARY KEY, data JSON);\r\n\r\nINSERT INTO cbr (id, data) VALUES (1, json('%1'));"
link(onFString,2918495:doExec,[])
link(Str1,7461844:Text,[])
}
Add(StrList,7461844,126,42)
{
Strings=#1:{|40: "Date": "2023-08-29T11:30:00+03:00",|48: "PreviousDate": "2023-08-26T11:30:00+03:00",|84: "PreviousURL": "\/\/www.cbr-xml-daily.ru\/archive\/2023\/08\/26\/daily_json.js",|45: "Timestamp": "2023-08-29T14:00:00+03:00",|15: "Valute": {|16: "AUD": {|27: "ID": "R01010",|29: "NumCode": "036",|30: "CharCode": "AUD",|25: "Nominal": 1,|43: "Name": "Австралийский доллар",|29: "Value": 61.3979,|31: "Previous": 60.7765|10: },|16: "AZN": {|28: "ID": "R01020A",|29: "NumCode": "944",|30: "CharCode": "AZN",|25: "Nominal": 1,|44: "Name": "Азербайджанский манат",|29: "Value": 56.1598,|31: "Previous": 55.7128|10: },|16: "GBP": {|27: "ID": "R01035",|29: "NumCode": "826",|30: "CharCode": "GBP",|25: "Nominal": 1,|63: "Name": "Фунт стерлингов Соединенного королевства",|30: "Value": 120.7526,|32: "Previous": 119.7914|10: },|16: "AMD": {|27: "ID": "R01060",|29: "NumCode": "051",|30: "CharCode": "AMD",|27: "Nominal": 100,|39: "Name": "Армянских драмов",|29: "Value": 24.7342,|30: "Previous": 24.538|10: },|16: "BYN": {|28: "ID": "R01090B",|29: "NumCode": "933",|30: "CharCode": "BYN",|25: "Nominal": 1,|40: "Name": "Белорусский рубль",|29: "Value": 29.8938,|31: "Previous": 29.8615|10: },|16: "BGN": {|27: "ID": "R01100",|29: "NumCode": "975",|30: "CharCode": "BGN",|25: "Nominal": 1,|37: "Name": "Болгарский лев",|29: "Value": 52.7585,|31: "Previous": 52.4922|10: },|16: "BRL": {|27: "ID": "R01115",|29: "NumCode": "986",|30: "CharCode": "BRL",|25: "Nominal": 1,|39: "Name": "Бразильский реал",|29: "Value": 19.5763,|29: "Previous": 19.43|10: },|16: "HUF": {|27: "ID": "R01135",|29: "NumCode": "348",|30: "CharCode": "HUF",|27: "Nominal": 100,|42: "Name": "Венгерских форинтов",|28: "Value": 26.923,|31: "Previous": 26.6771|10: },|16: "VND": {|27: "ID": "R01150",|29: "NumCode": "704",|30: "CharCode": "VND",|29: "Nominal": 10000,|41: "Name": "Вьетнамских донгов",|29: "Value": 39.8463,|31: "Previous": 39.5588|10: },|16: "HKD": {|27: "ID": "R01200",|29: "NumCode": "344",|30: "CharCode": "HKD",|25: "Nominal": 1,|41: "Name": "Гонконгский доллар",|29: "Value": 12.1915,|31: "Previous": 12.0975|10: },|16: "GEL": {|27: "ID": "R01210",|29: "NumCode": "981",|30: "CharCode": "GEL",|25: "Nominal": 1,|38: "Name": "Грузинский лари",|29: "Value": 36.3024,|31: "Previous": 35.8933|10: },|16: "DKK": {|27: "ID": "R01215",|29: "NumCode": "208",|30: "CharCode": "DKK",|25: "Nominal": 1,|36: "Name": "Датская крона",|29: "Value": 13.8435,|31: "Previous": 13.7736|10: },|16: "AED": {|27: "ID": "R01230",|29: "NumCode": "784",|30: "CharCode": "AED",|25: "Nominal": 1,|33: "Name": "Дирхам ОАЭ",|29: "Value": 25.9928,|31: "Previous": 25.7859|10: },|16: "USD": {|27: "ID": "R01235",|29: "NumCode": "840",|30: "CharCode": "USD",|25: "Nominal": 1,|33: "Name": "Доллар США",|29: "Value": 95.4717,|31: "Previous": 94.7117|10: },|16: "EUR": {|27: "ID": "R01239",|29: "NumCode": "978",|30: "CharCode": "EUR",|25: "Nominal": 1,|27: "Name": "Евро",|30: "Value": 103.2434,|32: "Previous": 102.2586|10: },|16: "EGP": {|27: "ID": "R01240",|29: "NumCode": "818",|30: "CharCode": "EGP",|26: "Nominal": 10,|40: "Name": "Египетских фунтов",|29: "Value": 30.9014,|31: "Previous": 30.6554|10: },|16: "INR": {|27: "ID": "R01270",|29: "NumCode": "356",|30: "CharCode": "INR",|26: "Nominal": 10,|38: "Name": "Индийских рупий",|29: "Value": 11.4868,|31: "Previous": 11.3986|10: },|16: "IDR": {|27: "ID": "R01280",|29: "NumCode": "360",|30: "CharCode": "IDR",|29: "Nominal": 10000,|42: "Name": "Индонезийских рупий",|28: "Value": 62.412,|31: "Previous": 62.0938|10: },|16: "KZT": {|27: "ID": "R01335",|29: "NumCode": "398",|30: "CharCode": "KZT",|27: "Nominal": 100,|42: "Name": "Казахстанских тенге",|29: "Value": 20.7471,|31: "Previous": 20.4986|10: },|16: "CAD": {|27: "ID": "R01350",|29: "NumCode": "124",|30: "CharCode": "CAD",|25: "Nominal": 1,|39: "Name": "Канадский доллар",|29: "Value": 70.1688,|31: "Previous": 69.8206|10: },|16: "QAR": {|27: "ID": "R01355",|29: "NumCode": "634",|30: "CharCode": "QAR",|25: "Nominal": 1,|37: "Name": "Катарский риал",|29: "Value": 26.2285,|31: "Previous": 26.0197|10: },|16: "KGS": {|27: "ID": "R01370",|29: "NumCode": "417",|30: "CharCode": "KGS",|26: "Nominal": 10,|39: "Name": "Киргизских сомов",|29: "Value": 10.8185,|31: "Previous": 10.7359|10: },|16: "CNY": {|27: "ID": "R01375",|29: "NumCode": "156",|30: "CharCode": "CNY",|25: "Nominal": 1,|37: "Name": "Китайский юань",|28: "Value": 13.055,|30: "Previous": 12.972|10: },|16: "MDL": {|27: "ID": "R01500",|29: "NumCode": "498",|30: "CharCode": "MDL",|26: "Nominal": 10,|38: "Name": "Молдавских леев",|29: "Value": 53.5368,|30: "Previous": 53.055|10: },|16: "NZD": {|27: "ID": "R01530",|29: "NumCode": "554",|30: "CharCode": "NZD",|25: "Nominal": 1,|44: "Name": "Новозеландский доллар",|29: "Value": 56.4906,|31: "Previous": 56.0504|10: },|16: "NOK": {|27: "ID": "R01535",|29: "NumCode": "578",|30: "CharCode": "NOK",|26: "Nominal": 10,|38: "Name": "Норвежских крон",|29: "Value": 89.1534,|31: "Previous": 88.8819|10: },|16: "PLN": {|27: "ID": "R01565",|29: "NumCode": "985",|30: "CharCode": "PLN",|25: "Nominal": 1,|38: "Name": "Польский злотый",|29: "Value": 23.0619,|30: "Previous": 22.926|10: },|16: "RON": {|28: "ID": "R01585F",|29: "NumCode": "946",|30: "CharCode": "RON",|25: "Nominal": 1,|36: "Name": "Румынский лей",|29: "Value": 20.9006,|31: "Previous": 20.6939|10: },|16: "XDR": {|27: "ID": "R01589",|29: "NumCode": "960",|30: "CharCode": "XDR",|25: "Nominal": 1,|60: "Name": "СДР (специальные права заимствования)",|30: "Value": 126.6757,|32: "Previous": 125.9552|10: },|16: "SGD": {|27: "ID": "R01625",|29: "NumCode": "702",|30: "CharCode": "SGD",|25: "Nominal": 1,|42: "Name": "Сингапурский доллар",|29: "Value": 70.4172,|31: "Previous": 69.7743|10: },|16: "TJS": {|27: "ID": "R01670",|29: "NumCode": "972",|30: "CharCode": "TJS",|26: "Nominal": 10,|40: "Name": "Таджикских сомони",|29: "Value": 87.0989,|31: "Previous": 86.4079|10: },|16: "THB": {|27: "ID": "R01675",|29: "NumCode": "764",|30: "CharCode": "THB",|26: "Nominal": 10,|40: "Name": "Таиландских батов",|29: "Value": 27.1426,|31: "Previous": 27.0022|10: },|16: "TRY": {|28: "ID": "R01700J",|29: "NumCode": "949",|30: "CharCode": "TRY",|26: "Nominal": 10,|35: "Name": "Турецких лир",|29: "Value": 36.1227,|31: "Previous": 34.9256|10: },|16: "TMT": {|28: "ID": "R01710A",|29: "NumCode": "934",|30: "CharCode": "TMT",|25: "Nominal": 1,|46: "Name": "Новый туркменский манат",|29: "Value": 27.2776,|31: "Previous": 27.0605|10: },|16: "UZS": {|27: "ID": "R01717",|29: "NumCode": "860",|30: "CharCode": "UZS",|29: "Nominal": 10000,|38: "Name": "Узбекских сумов",|29: "Value": 79.0977,|31: "Previous": 78.6053|10: },|16: "UAH": {|27: "ID": "R01720",|29: "NumCode": "980",|30: "CharCode": "UAH",|26: "Nominal": 10,|40: "Name": "Украинских гривен",|29: "Value": 25.8393,|31: "Previous": 25.6518|10: },|16: "CZK": {|27: "ID": "R01760",|29: "NumCode": "203",|30: "CharCode": "CZK",|26: "Nominal": 10,|35: "Name": "Чешских крон",|29: "Value": 42.7683,|31: "Previous": 42.5403|10: },|16: "SEK": {|27: "ID": "R01770",|29: "NumCode": "752",|30: "CharCode": "SEK",|26: "Nominal": 10,|36: "Name": "Шведских крон",|29: "Value": 86.5776,|30: "Previous": 85.911|10: },|16: "CHF": {|27: "ID": "R01775",|29: "NumCode": "756",|30: "CharCode": "CHF",|25: "Nominal": 1,|40: "Name": "Швейцарский франк",|30: "Value": 107.9752,|32: "Previous": 106.9464|10: },|16: "RSD": {|28: "ID": "R01805F",|29: "NumCode": "941",|30: "CharCode": "RSD",|27: "Nominal": 100,|39: "Name": "Сербских динаров",|29: "Value": 88.0414,|31: "Previous": 87.1011|10: },|16: "ZAR": {|27: "ID": "R01810",|29: "NumCode": "710",|30: "CharCode": "ZAR",|26: "Nominal": 10,|45: "Name": "Южноафриканских рэндов",|29: "Value": 51.0609,|31: "Previous": 50.7663|10: },|16: "KRW": {|27: "ID": "R01815",|29: "NumCode": "410",|30: "CharCode": "KRW",|28: "Nominal": 1000,|43: "Name": "Вон Республики Корея",|29: "Value": 72.1412,|31: "Previous": 71.4697|10: },|16: "JPY": {|27: "ID": "R01820",|29: "NumCode": "392",|30: "CharCode": "JPY",|27: "Nominal": 100,|35: "Name": "Японских иен",|29: "Value": 65.1728,|31: "Previous": 64.8266|9: }|5: }|1:}|
}
Add(TreeViewTrain,13471299,322,91)
{
Left=140
Top=175
Align=5
Name="dsa"
CaptionIndex=10
ParentIDIndex=7
IDIndex=6
Point(doExpand)
}
Add(TVT_AddNode,9833059,273,98)
{
TreeView="dsa"
link(onAddNode,13471299:doExpand,[])
}

или так
Add(MainForm,2953706,84,133)
{
Width=649
Point(onClose)
link(onCreate,14737172:doData,[])
}
Add(MultiElementEx,2906271,203,147)
{
link(onParse,9833059:doAddNode,[])
link(onFinish,13471299:doExpand,[(256,160)(256,202)])
}
BEGIN_SDK
Add(EditMultiEx,1971279,21,21)
{
WorkCount=#7:doParse|
EventCount=#7:onParse|8:onFinish|7:onError|
DataCount=#4:json|
Width=419
Height=151
VOffset=28
HOffset=42
link(doParse,12447265:doValue,[])
}
Add(DS_SQLite,7361690,126,49)
{
Name="js"
FileName=":memory:"
Point(onError)
link(onOpen,16774519:doString,[])
link(onError,13069585:doWork2,[(165,62)(165,97)])
}
Add(DSC_Exec,2918495,224,49)
{
DSManager="js"
link(onExec,4332115:doEvent1,[])
link(onError,13069585:doWork1,[(263,62)])
}
Add(FormatStr,16774519,175,49)
{
DataCount=1
Mask="CREATE TABLE cbr (id INTEGER PRIMARY KEY, data JSON);\r\nINSERT INTO cbr (id, data) VALUES (1, json('%1'));"
link(onFString,2918495:doExec,[])
link(Str1,12447265:Value,[(181,40)(111,40)(111,89)(69,89)])
}
Add(DSC_Query,6401394,315,49)
{
SQL="select *, key || ' : ' || IIF(atom IS NULL,'', atom)\r\nfrom cbr, json_tree(cbr.data, '$')\r\n; "
DSManager="js"
link(onQuery,1971279:onParse,[])
link(onError,13385223:doWork2,[])
}
Add(Hub,4332115,273,49)
{
OutCount=3
link(onEvent1,6401394:doQuery,[])
link(onEvent2,1971279:onFinish,[(298,62)(298,41)(354,41)(354,62)])
link(onEvent3,7361690:doClose,[(298,69)(298,90)(116,90)(116,62)])
}
Add(Icon,14279430,385,105)
{
@Hint=#5:#main|
Icon=[ZIP9E09000078DAC5954D0A833010854777DD7459EA2F5D76D903782C518FD0B52082F750F756EFA4AB3413899460AA31DA3E792293E44B66120980419FEB15E8FB06CF13C00500EED434040F18E34CB4ED751ECD457EA86118481CC7C4B66D8253AB18C72449C21832215B952B1AE790C9B22CD6A76D5BE5DC9BA699F29089AF61AB96C6CFB55755453CCF2341104C31FCC6585DD7DA7CD775594CE463CCF77D6DBE6C8C4A5F593B5F27D642D45C5E5BF9621DF6E21F5D1F94E338D2FD15EBB6855F96259B43E4637DF0ECEAF28FFEBFFEC1E7F5975997FF8D6D9AE66E7CAE2CCB886118CC799EEFCA2F8A6262A769AAB53F623F15F6E7FDD275DD2A3E67637DD6288A22A5BB50858DEAFB9E846138E5B16415F6518283F5062C6DC95E]
}
Add(HubEx,13069585,259,91)
{
link(onEvent,13385223:doWork3,[(361,97)])
}
Add(Memory,12447265,63,49)
{
Point(Data)
link(onData,7361690:doOpen,[])
link(Data,1971279:json,[])
}
Add(HubEx,13385223,357,63)
{
link(onEvent,1971279:onError,[])
}
END_SDK
Add(TVT_AddNode,9833059,266,147)
{
TreeView="dsa"
}
Add(StrList,7461844,140,91)
{
Strings=#1:{|40: "Date": "2023-08-29T11:30:00+03:00",|48: "PreviousDate": "2023-08-26T11:30:00+03:00",|84: "PreviousURL": "\/\/www.cbr-xml-daily.ru\/archive\/2023\/08\/26\/daily_json.js",|45: "Timestamp": "2023-08-29T14:00:00+03:00",|15: "Valute": {|16: "AUD": {|27: "ID": "R01010",|29: "NumCode": "036",|30: "CharCode": "AUD",|25: "Nominal": 1,|43: "Name": "Австралийский доллар",|29: "Value": 61.3979,|31: "Previous": 60.7765|10: },|16: "AZN": {|28: "ID": "R01020A",|29: "NumCode": "944",|30: "CharCode": "AZN",|25: "Nominal": 1,|44: "Name": "Азербайджанский манат",|29: "Value": 56.1598,|31: "Previous": 55.7128|10: },|16: "GBP": {|27: "ID": "R01035",|29: "NumCode": "826",|30: "CharCode": "GBP",|25: "Nominal": 1,|63: "Name": "Фунт стерлингов Соединенного королевства",|30: "Value": 120.7526,|32: "Previous": 119.7914|10: },|16: "AMD": {|27: "ID": "R01060",|29: "NumCode": "051",|30: "CharCode": "AMD",|27: "Nominal": 100,|39: "Name": "Армянских драмов",|29: "Value": 24.7342,|30: "Previous": 24.538|10: },|16: "BYN": {|28: "ID": "R01090B",|29: "NumCode": "933",|30: "CharCode": "BYN",|25: "Nominal": 1,|40: "Name": "Белорусский рубль",|29: "Value": 29.8938,|31: "Previous": 29.8615|10: },|16: "BGN": {|27: "ID": "R01100",|29: "NumCode": "975",|30: "CharCode": "BGN",|25: "Nominal": 1,|37: "Name": "Болгарский лев",|29: "Value": 52.7585,|31: "Previous": 52.4922|10: },|16: "BRL": {|27: "ID": "R01115",|29: "NumCode": "986",|30: "CharCode": "BRL",|25: "Nominal": 1,|39: "Name": "Бразильский реал",|29: "Value": 19.5763,|29: "Previous": 19.43|10: },|16: "HUF": {|27: "ID": "R01135",|29: "NumCode": "348",|30: "CharCode": "HUF",|27: "Nominal": 100,|42: "Name": "Венгерских форинтов",|28: "Value": 26.923,|31: "Previous": 26.6771|10: },|16: "VND": {|27: "ID": "R01150",|29: "NumCode": "704",|30: "CharCode": "VND",|29: "Nominal": 10000,|41: "Name": "Вьетнамских донгов",|29: "Value": 39.8463,|31: "Previous": 39.5588|10: },|16: "HKD": {|27: "ID": "R01200",|29: "NumCode": "344",|30: "CharCode": "HKD",|25: "Nominal": 1,|41: "Name": "Гонконгский доллар",|29: "Value": 12.1915,|31: "Previous": 12.0975|10: },|16: "GEL": {|27: "ID": "R01210",|29: "NumCode": "981",|30: "CharCode": "GEL",|25: "Nominal": 1,|38: "Name": "Грузинский лари",|29: "Value": 36.3024,|31: "Previous": 35.8933|10: },|16: "DKK": {|27: "ID": "R01215",|29: "NumCode": "208",|30: "CharCode": "DKK",|25: "Nominal": 1,|36: "Name": "Датская крона",|29: "Value": 13.8435,|31: "Previous": 13.7736|10: },|16: "AED": {|27: "ID": "R01230",|29: "NumCode": "784",|30: "CharCode": "AED",|25: "Nominal": 1,|33: "Name": "Дирхам ОАЭ",|29: "Value": 25.9928,|31: "Previous": 25.7859|10: },|16: "USD": {|27: "ID": "R01235",|29: "NumCode": "840",|30: "CharCode": "USD",|25: "Nominal": 1,|33: "Name": "Доллар США",|29: "Value": 95.4717,|31: "Previous": 94.7117|10: },|16: "EUR": {|27: "ID": "R01239",|29: "NumCode": "978",|30: "CharCode": "EUR",|25: "Nominal": 1,|27: "Name": "Евро",|30: "Value": 103.2434,|32: "Previous": 102.2586|10: },|16: "EGP": {|27: "ID": "R01240",|29: "NumCode": "818",|30: "CharCode": "EGP",|26: "Nominal": 10,|40: "Name": "Египетских фунтов",|29: "Value": 30.9014,|31: "Previous": 30.6554|10: },|16: "INR": {|27: "ID": "R01270",|29: "NumCode": "356",|30: "CharCode": "INR",|26: "Nominal": 10,|38: "Name": "Индийских рупий",|29: "Value": 11.4868,|31: "Previous": 11.3986|10: },|16: "IDR": {|27: "ID": "R01280",|29: "NumCode": "360",|30: "CharCode": "IDR",|29: "Nominal": 10000,|42: "Name": "Индонезийских рупий",|28: "Value": 62.412,|31: "Previous": 62.0938|10: },|16: "KZT": {|27: "ID": "R01335",|29: "NumCode": "398",|30: "CharCode": "KZT",|27: "Nominal": 100,|42: "Name": "Казахстанских тенге",|29: "Value": 20.7471,|31: "Previous": 20.4986|10: },|16: "CAD": {|27: "ID": "R01350",|29: "NumCode": "124",|30: "CharCode": "CAD",|25: "Nominal": 1,|39: "Name": "Канадский доллар",|29: "Value": 70.1688,|31: "Previous": 69.8206|10: },|16: "QAR": {|27: "ID": "R01355",|29: "NumCode": "634",|30: "CharCode": "QAR",|25: "Nominal": 1,|37: "Name": "Катарский риал",|29: "Value": 26.2285,|31: "Previous": 26.0197|10: },|16: "KGS": {|27: "ID": "R01370",|29: "NumCode": "417",|30: "CharCode": "KGS",|26: "Nominal": 10,|39: "Name": "Киргизских сомов",|29: "Value": 10.8185,|31: "Previous": 10.7359|10: },|16: "CNY": {|27: "ID": "R01375",|29: "NumCode": "156",|30: "CharCode": "CNY",|25: "Nominal": 1,|37: "Name": "Китайский юань",|28: "Value": 13.055,|30: "Previous": 12.972|10: },|16: "MDL": {|27: "ID": "R01500",|29: "NumCode": "498",|30: "CharCode": "MDL",|26: "Nominal": 10,|38: "Name": "Молдавских леев",|29: "Value": 53.5368,|30: "Previous": 53.055|10: },|16: "NZD": {|27: "ID": "R01530",|29: "NumCode": "554",|30: "CharCode": "NZD",|25: "Nominal": 1,|44: "Name": "Новозеландский доллар",|29: "Value": 56.4906,|31: "Previous": 56.0504|10: },|16: "NOK": {|27: "ID": "R01535",|29: "NumCode": "578",|30: "CharCode": "NOK",|26: "Nominal": 10,|38: "Name": "Норвежских крон",|29: "Value": 89.1534,|31: "Previous": 88.8819|10: },|16: "PLN": {|27: "ID": "R01565",|29: "NumCode": "985",|30: "CharCode": "PLN",|25: "Nominal": 1,|38: "Name": "Польский злотый",|29: "Value": 23.0619,|30: "Previous": 22.926|10: },|16: "RON": {|28: "ID": "R01585F",|29: "NumCode": "946",|30: "CharCode": "RON",|25: "Nominal": 1,|36: "Name": "Румынский лей",|29: "Value": 20.9006,|31: "Previous": 20.6939|10: },|16: "XDR": {|27: "ID": "R01589",|29: "NumCode": "960",|30: "CharCode": "XDR",|25: "Nominal": 1,|60: "Name": "СДР (специальные права заимствования)",|30: "Value": 126.6757,|32: "Previous": 125.9552|10: },|16: "SGD": {|27: "ID": "R01625",|29: "NumCode": "702",|30: "CharCode": "SGD",|25: "Nominal": 1,|42: "Name": "Сингапурский доллар",|29: "Value": 70.4172,|31: "Previous": 69.7743|10: },|16: "TJS": {|27: "ID": "R01670",|29: "NumCode": "972",|30: "CharCode": "TJS",|26: "Nominal": 10,|40: "Name": "Таджикских сомони",|29: "Value": 87.0989,|31: "Previous": 86.4079|10: },|16: "THB": {|27: "ID": "R01675",|29: "NumCode": "764",|30: "CharCode": "THB",|26: "Nominal": 10,|40: "Name": "Таиландских батов",|29: "Value": 27.1426,|31: "Previous": 27.0022|10: },|16: "TRY": {|28: "ID": "R01700J",|29: "NumCode": "949",|30: "CharCode": "TRY",|26: "Nominal": 10,|35: "Name": "Турецких лир",|29: "Value": 36.1227,|31: "Previous": 34.9256|10: },|16: "TMT": {|28: "ID": "R01710A",|29: "NumCode": "934",|30: "CharCode": "TMT",|25: "Nominal": 1,|46: "Name": "Новый туркменский манат",|29: "Value": 27.2776,|31: "Previous": 27.0605|10: },|16: "UZS": {|27: "ID": "R01717",|29: "NumCode": "860",|30: "CharCode": "UZS",|29: "Nominal": 10000,|38: "Name": "Узбекских сумов",|29: "Value": 79.0977,|31: "Previous": 78.6053|10: },|16: "UAH": {|27: "ID": "R01720",|29: "NumCode": "980",|30: "CharCode": "UAH",|26: "Nominal": 10,|40: "Name": "Украинских гривен",|29: "Value": 25.8393,|31: "Previous": 25.6518|10: },|16: "CZK": {|27: "ID": "R01760",|29: "NumCode": "203",|30: "CharCode": "CZK",|26: "Nominal": 10,|35: "Name": "Чешских крон",|29: "Value": 42.7683,|31: "Previous": 42.5403|10: },|16: "SEK": {|27: "ID": "R01770",|29: "NumCode": "752",|30: "CharCode": "SEK",|26: "Nominal": 10,|36: "Name": "Шведских крон",|29: "Value": 86.5776,|30: "Previous": 85.911|10: },|16: "CHF": {|27: "ID": "R01775",|29: "NumCode": "756",|30: "CharCode": "CHF",|25: "Nominal": 1,|40: "Name": "Швейцарский франк",|30: "Value": 107.9752,|32: "Previous": 106.9464|10: },|16: "RSD": {|28: "ID": "R01805F",|29: "NumCode": "941",|30: "CharCode": "RSD",|27: "Nominal": 100,|39: "Name": "Сербских динаров",|29: "Value": 88.0414,|31: "Previous": 87.1011|10: },|16: "ZAR": {|27: "ID": "R01810",|29: "NumCode": "710",|30: "CharCode": "ZAR",|26: "Nominal": 10,|45: "Name": "Южноафриканских рэндов",|29: "Value": 51.0609,|31: "Previous": 50.7663|10: },|16: "KRW": {|27: "ID": "R01815",|29: "NumCode": "410",|30: "CharCode": "KRW",|28: "Nominal": 1000,|43: "Name": "Вон Республики Корея",|29: "Value": 72.1412,|31: "Previous": 71.4697|10: },|16: "JPY": {|27: "ID": "R01820",|29: "NumCode": "392",|30: "CharCode": "JPY",|27: "Nominal": 100,|35: "Name": "Японских иен",|29: "Value": 65.1728,|31: "Previous": 64.8266|9: }|5: }|1:}|
}
Add(TreeViewTrain,13471299,266,189)
{
Left=140
Top=175
Align=5
Name="dsa"
CaptionIndex=10
ParentIDIndex=7
IDIndex=6
Point(doExpand)
}
Add(DoData,14737172,140,147)
{
link(onEventData,2906271:doParse,[])
link(Data,7461844:Text,[])
}

Внимание!!! Для работы примеров необходимо скачать последнюю версию 32-bit DLL (x86) for SQLite version 3.43.0. - https://www.sqlite.org/download.html
или прямая ссылка - https://www.sqlite.org/2023/sqlite-dll-win32-x86-3430000.zip

Всё в комплекте – https://disk.yandex.ru/d/oF4bm5lKoskiLw

Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi)
- SQLite version 3.43.0

Редактировалось 1 раз(а), последний 2023-11-05 05:26:11
карма: 15

0
Ответов: 787
Рейтинг: 168
#11: 2023-09-02 19:37:18 ЛС | профиль | цитата
Возможно, кому-то будет интересно что к websocket серверам можно подключатся с помощью входящей в состав Windows 10 программы – cURL

Пример: получение 24hrTicker по паре bnbbtc с биржи binance

Add(MainForm,2953706,63,105)
{
WindowsState=2
Point(onClose)
link(onCreate,5489325:doConsoleExec,[])
link(onClose,5489325:doConsoleTerminate,[])
}
Add(WinExec,5489325,119,105)
{
FileName="curl"
Param="--include --no-buffer --header "Connection: Upgrade" --header "Upgrade: websocket" --header "Host: stream.binance.com" --header "Origin: https://stream.binance.com:9443/ws/bnbbtc@ticker" --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" --header "Sec-WebSocket-Version: 13" "https://stream.binance.com:9443/ws/bnbbtc@ticker""
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
Point(doConsoleTerminate)
link(onConsoleResult,5936538:doAdd,[])
link(onConsoleError,10319397:doAdd,[(179,132)(179,174)])
}
Add(Memo,5936538,189,119)
{
Left=550
Top=160
Align=5
Font=[Lucida Console,10,0,0,0]
ScrollBars=3
}
Add(Memo,10319397,189,168)
{
Left=550
Top=160
Height=200
Align=4
Font=[Lucida Console,10,0,0,0]
ModeSp=1
ScrollBars=3
Point(EndIdx)
}

карма: 15

0
Ответов: 787
Рейтинг: 168
#12: 2023-09-04 15:26:34 ЛС | профиль | цитата
Подключение к websocket серверу с помощью cscript и jscript -а

Пример: подписка на bookticker по паре BTCUSDT с биржи bybit

Add(MainForm,16417920,70,196)
{
Width=948
Point(onClose)
link(onCreate,14115103:doString,[])
link(onClose,8827366:doConsoleTerminate,[(116,223)(116,251)(263,251)(263,223)])
}
Add(Memo,6453024,413,217)
{
Width=932
Height=261
Align=5
ScrollBars=3
}
Add(WinExec,8827366,287,196)
{
FileName="cscript"
Mode=0
Point(doConsoleExec)
Point(onErrorExec)
Point(onConsoleResult)
Point(doConsoleTerminate)
link(onErrorExec,85276:doWork1,[(340,216)])
link(onConsoleResult,85276:doWork2,[])
}
Add(BlockFind,8178086,357,217)
{
StartBlock="{"
EndBlock="}"
link(onSearch,6453024:doAdd,[])
}
Add(FormatStr,14115103,126,210)
{
Mask="var StdIn = WSH.StdIn, StdOut = WSH.StdOut, StdErr = WSH.StdErr; \r\nvar document = new ActiveXObject('htmlfile');\r\ndocument.write('<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />');\r\nvar window = document.Script, JSON = window.JSON, WebSocket = window.WebSocket;\r\nvar url = '%1';\r\nvar ws = new WebSocket(url);\r\nws.onopen = function(event){ws.send('%2');}\r\nws.onmessage = function(event){StdOut.WriteLine(event.data);}\r\nws.onerror = function(event){StdErr.WriteLine('Web socket error !');}\r\nws.onclose = function(event){StdOut.WriteLine('Web socket closed');WSH.Quit();}\r\nwhile(-1){WSH.Sleep(100);}"
link(onFString,927093:doConvert,[])
link(Str1,16770708:Text,[])
link(Str2,2968059:Text,[])
}
Add(TempFileStream,8761983,224,210)
{
Extention=".js"
link(onCreate,8827366:doConsoleExec,[])
}
Add(StreamConvertor,927093,175,210)
{
Mode=7
link(onResult,8761983:doCreate,[])
}
Add(VisualStrings,16770708,126,133)
{
@Hint=#24:WebSocket public channel|
Lines=#37:wss://stream.bybit.com/spot/public/v3|
Width=207
AddHint(272,-2,144,13,@Hint)
}
Add(VisualStrings,2968059,133,161)
{
@Hint=#19:Subscribe to Topics|
Lines=#48:{"op":"subscribe","args":["bookticker.BTCUSDT"]}|
Width=270
AddHint(302,-1,109,13,@Hint)
}
Add(HubEx,85276,336,217)
{
link(onEvent,8178086:doSearch,[])
}

Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi) rev - 2404
карма: 15

0
Ответов: 787
Рейтинг: 168
#13: 2023-10-22 13:40:58 ЛС | профиль | цитата
Использование для передачи данных между программами Finger протокола.
https://en.wikipedia.org/wiki/Finger_(protocol)
https://datatracker.ietf.org/doc/html/rfc1288
Эмулятор Finger daemon сервера
Add(MainForm,2953706,42,168)
{
Caption="fingerd"
link(onCreate,10116780:doOpen,[])
}
Add(TCP_Server,10116780,119,182)
{
Port=79
Point(doCloseAll)
link(onRead,7510436:doSeparateMT,[])
}
Add(Memo,4863913,273,140)
{
Left=550
Top=160
Align=5
ScrollBars=3
}
Add(StrList,7708657,329,161)
{
Strings=#4:logo|5:table|4:text|3:dir|
Point(onGetIndex)
Point(doGetIndex)
link(onGetIndex,14893126:doIndex,[])
}
Add(DoData,14474108,434,168)
{
link(onEventData,13607571:doEvent1,[(473,174)(473,230)(81,230)(81,202)])
link(Data,14893126:Var,[(440,159)(426,159)(426,208)(384,208)])
}
Add(StrList,690153,385,112)
{
Strings=#65: +------------------------------------------+----+----+--------+|65: | Description | Qt | Un | Price ||65: +------------------------------------------+----+----+--------+|65: | Double-action Quickstart II rem. L=740mm | 1 | PC | 98,66 ||65: | Spray gun for udder washer | 20 | PC | 17,77 ||65: | COMBI-cock ?51 mm cpl. | 10 | PC | 63,43 ||65: | Milk hose ? 24/14 x 2750 | 32 | PC | 9,76 ||65: | Service no.1 RDS MAX double box | 1 | PC | 250,51 ||65: | Spiral spring for tube filter | 3 | PC | 43,2 ||65: | V-belt spz 1087 | 4 | PC | 5,91 ||65: +------------------------------------------+----+----+--------+|
}
Add(MT_MultiData,7510436,168,182)
{
link(onData1,14776647:doEvent1,[])
link(onData2,2953706:doCaption,[(207,195)(207,160)(32,160)(32,174)])
}
Add(Hub,13607571,91,196)
{
link(onEvent1,10116780:doSend,[])
link(onEvent2,10116780:doCloseAll,[])
}
Add(StrList,6345444,343,112)
{
Strings=#37: __ __ _ _____ _____ _____ |37: | | |_| _ | __| | |37: | | | |__ | | | | |37: |__|__|_|__|__|_____|_|_|_| |11: |0:|
}
Add(GetIndexData,14893126,378,168)
{
Count=3
link(onIndex,14474108:doData,[])
link(Data1,6345444:Text,[(384,152)(349,152)])
link(Data2,690153:Text,[])
link(Data3,9596827:Text,[(398,152)(433,152)])
}
Add(Hub,14776647,231,182)
{
link(onEvent1,4863913:doAdd,[(256,188)(256,146)])
link(onEvent2,14287908:doTrim,[])
}
Add(Trim,14287908,273,189)
{
Mode=7
link(onTrim,7708657:doGetIndex,[])
}
Add(StrList,9596827,427,112)
{
Strings=#561:Разнообразный и богатый опыт говорит нам, что внедрение современных методик обеспечивает актуальность существующих финансовых и административных условий. Мы вынуждены отталкиваться от того, что разбавленное изрядной долей эмпатии, рациональное мышление не даёт нам иного выбора, кроме определения новых предложений. Банальные, но неопровержимые выводы, а также элементы политического процесса набирают популярность среди определенных слоев населения, а значит, должны быть превращены в посмешище, хотя само их существование приносит несомненную пользу обществу!|
}

Клиент – программа Finger входящая в состав Windows
Add(MainForm,2953706,35,126)
{
Width=834
Height=454
}
Add(WinExec,13803038,287,126)
{
FileName="finger"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
link(onConsoleResult,5719053:doAdd,[])
}
Add(StrCat,16051520,238,140)
{
Str2="@localhost"
link(onStrCat,13803038:doConsoleExec,[])
}
Add(Memo,5719053,343,140)
{
Width=818
Height=415
Align=5
Font=[Consolas,12,0,0,204]
ScrollBars=2
}
Add(StrList,7708657,189,133)
{
Strings=#4:logo|5:table|4:text|0:|0:|
Point(doGetString)
Point(onGetString)
link(onGetString,16051520:doStrCat,[])
}
Add(Hub,529464,154,154)
{
link(onEvent1,5719053:doClear,[(179,160)(179,181)(326,181)(326,153)])
link(onEvent2,7708657:doGetString,[])
}
Add(Menu,8590123,98,147)
{
Menu=#4:logo|5:table|4:text|
Point(onSelectNum)
link(onSelectNum,529464:doEvent1,[])
}


Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi) rev - 2404

Редактировалось 1 раз(а), последний 2023-10-22 13:45:28
карма: 15

0
Ответов: 787
Рейтинг: 168
#14: 2023-11-12 08:46:09 ЛС | профиль | цитата
Пример получения расширенных свойств файла.

Add(MainForm,14681279,98,119)
{
Width=665
Height=432
Caption="Получение всех не пустых свойст файла"
link(onCreate,9650908:doExecute,[])
}
Add(WinExec,13614633,266,119)
{
FileName="powershell.exe"
Mode=0
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
link(onConsoleResult,13388704:doWork2,[])
link(onConsoleError,13388704:doWork3,[(319,146)])
}
Add(Memo,7717528,399,133)
{
Width=649
Height=393
Align=5
Font=[Consolas,12,0,0,204]
ScrollBars=3
}
Add(Charset,12271718,343,133)
{
link(onCharset,7717528:doAdd,[])
}
Add(HubEx,13388704,315,133)
{
link(onEvent,12271718:doCharset,[])
}
Add(FormatStr,3924364,203,133)
{
DataCount=1
Mask="$objShell = New-Object -ComObject Shell.Application\r\n$folder = Split-Path '%1'\r\n$file = Split-Path '%1' -Leaf\r\n\r\n$objFolder = $objShell.Namespace((Get-Item $folder).FullName)\r\n\r\n$filenameWithExtension = $file\r\n\r\n$objFile = $objFolder.ParseName($filenameWithExtension)\r\n$fileMeta = [ordered]@{}\r\nfor($id = 0; $id -le 500; $id++){\r\n if($objFolder.GetDetailsOf($objFile, $id)){\r\n $fileMeta[\r\n $($objFolder.GetDetailsOf($objFolder, $id))\r\n ] = $($objFolder.GetDetailsOf($objFile, $id))\r\n }\r\n}\r\n\r\n# print ordered hashtable\r\n$fileMeta"
link(onFString,13614633:doConsoleExec,[])
}
Add(ODialog,9650908,154,133)
{
link(onExecute,3924364:doString,[])
}


Которые можно посмотреть в диалоге свойств (правая кнопка мыши -> Свойства) вкладки: Общие и Подробно.
Или вызвать так.

Add(MainForm,2953706,105,112)
{
Caption="Программно вызвать окно свойств"
link(onCreate,14245307:doExecute,[])
}
Add(ODialog,14245307,182,126)
{
link(onExecute,15981963:doEvent1,[])
link(onCancel,735059:doWork1,[(228,139)])
}
Add(VBJScript,1354917,287,126)
{
WorkPoints=#6:doWork|
Script=#22:Sub doWork(Data,Index)|63: With CreateObject("Scripting.FileSystemObject").GetFile(Data)|41: Folder = .ParentFolder : Name = .Name|10: End With|62: With GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")|77: Set Verbs = .document.Application.NameSpace(Folder).ParseName(Name).Verbs|60: Verbs.Item(Verbs.Count - 1).DoIt : .ExecWB 45, 2 : .Quit|10: End With|7:End Sub|
UseName=0
}
Add(Hub,15981963,245,126)
{
link(onEvent1,1354917:doWork,[])
link(onEvent2,735059:doWork2,[(270,139)(270,167)])
}
Add(HubEx,735059,224,161)
{
Angle=2
link(onEvent,2953706:doClose,[(95,167)(95,139)])
}


Список всех индексов и их названия для получения каких-то конкретных свойств

Add(MainForm,16417920,217,133)
{
Width=324
Height=526
Caption="Extended File Properties"
Point(onClose)
link(onCreate,14115103:doString,[])
}
Add(Memo,6453024,371,147)
{
Width=308
Height=487
Align=5
ScrollBars=3
}
Add(FormatStr,14115103,266,147)
{
Mask="var shellapp = new ActiveXObject("Shell.Application");\r\nvar folder = shellapp.NameSpace('C:\\\\');\r\nfor (var j = 0; j < 0x141; j++) {\r\n detail = folder.GetDetailsOf(null, j);\r\n sys.onEvent("[" + j + "] = " + detail);\r\n}\r\n\r\n\r\n\r\n\r\n"
link(onFString,12976639:##SetScript,[])
}
Add(VBJScript,12976639,315,147)
{
WorkPoints=#11:##SetScript|
EventPoints=#7:onEvent|0:|
Language=1
Script=#0:|0:|
UseName=0
link(onEvent,6453024:doAdd,[])
}


Проверено на
- Windows 10 (x64)
- Hiasm v4.05 build 186 (delphi) rev - 2404
карма: 15

0
Ответов: 2237
Рейтинг: 676
#15: 2023-11-12 10:13:13 ЛС | профиль | цитата
Странно, но вначале у меня не работали первая (memo пустой) и вторая (окно свойств не открывалось) схема. Или третья схема как-то повлияла или что-то еще, но при последующих запусках первой и второй схемы они начали работать. Странно, может только у меня так. Win 10 (x64).
карма: 11

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)