169 похожих чатов

Вот например простой пример, как получить стоимость хешрейта монеты монеро

с сайта whattomine.com
c использование сеарилизатора при парсинге JSON
TaskProfit := TTask.Run(procedure()
begin
var ProfMode: SmallInt;

TThread.Synchronize(Nil, procedure
begin
ProfMode := FProfitMode;
end);

var ResponseStr: String;
var Url: String;
var hr : string; // hashrate; hr=16
var curr: string; // &cost_currency=USD
hr := 'hr=100';
curr := '&cost_currency=USD';

var HTTPClient := THTTPClient.Create;
HTTPClient.ConnectionTimeout := 10000;
HTTPClient.Accept := CONTENTTYPE_APPLICATION_JSON;
HTTPClient.AcceptCharSet := 'UTF-8';

try
// ---------------------- Get Exchanhe XMR --------------------------
if ProfMode = 1 then
begin
Url := 'https://whattomine.com/coins/' + cXMRCode + '.json?' + hr +
'&p=0&fee=0&cost=0' + curr + '&hcost=0&span_br=&span_d=24';

Try
ResponseStr := HTTPClient.Get(Url).ContentAsString;
var CoinXMRPtofit := TJson.JsonToObject<TCoinProfit>(ResponseStr, [joIndentCasePreserve]);
if Assigned(CoinXMRPtofit) then
TThread.Synchronize(Nil, procedure
begin
CoinsProfitList.AddOrSetValue(cXMR, CoinXMRPtofit);
end);
Except
on E: Exception do
begin
TThread.Synchronize(Nil, procedure
begin
log('Error: ' + E.Message + ' metod: TimerGetExchangeInfoTimer');
end);
end;
End;
end; // end if

finally
HTTPClient.Free;
end;

end);

2 ответов

6 просмотров
Delphi Coder- Автор вопроса

Например, создаем класс: TCoinProfit = class Private Fid : UInt16; Fname : string; Ftag : string; Falgorithm : string; Fblock_time : string; Fblock_reward : Float64; Fblock_reward24 : Float64; Fblock_reward3 : Float64; Fblock_reward7 : Float64; Flast_block : UInt64; Fdifficulty : UInt64; Fdifficulty24 : Float64; Fdifficulty3 : Float64; Fdifficulty7 : Float64; Fnethash : UInt64; Fexchange_rate : Float64; Fexchange_rate24 : Float64; Fexchange_rate3 : Float64; Fexchange_rate7 : Float64; Fexchange_rate_vol : Float64; Fexchange_rate_curr : string; Fmarket_cap : string; Fpool_fee : string; Festimated_rewards : string; Fbtc_revenue : string; Frevenue : string; Fcost : string; Fprofit : string; Fstatus : string; Flagging : boolean; Ftesting : boolean; Flisted : boolean; Ftimestamp : UInt32; FResponseTime : TDateTime; public property id: UInt16 read Fid; property name: string read Fname; property tag: string read Ftag; property algorithm: string read Falgorithm; property block_time: string read Fblock_time; property block_reward: Float64 read Fblock_reward; property block_reward24: Float64 read Fblock_reward24; property block_reward3: Float64 read Fblock_reward3; property block_reward7: Float64 read Fblock_reward7; property last_block: UInt64 read Flast_block; property difficulty: UInt64 read Fdifficulty; property difficulty24: Float64 read Fdifficulty24; property difficulty3: Float64 read Fdifficulty3; property difficulty7: Float64 read Fdifficulty7; property nethash: UInt64 read Fnethash; property exchange_rate: Float64 read Fexchange_rate; property exchange_rate24: Float64 read Fexchange_rate24; property exchange_rate3: Float64 read Fexchange_rate3; property exchange_rate7: Float64 read Fexchange_rate7; property exchange_rate_vol: Float64 read Fexchange_rate_vol; property exchange_rate_curr: string read Fexchange_rate_curr; property market_cap: string read Fmarket_cap; property pool_fee: string read Fpool_fee; property estimated_rewards: string read Festimated_rewards; property btc_revenue: string read Fbtc_revenue; property revenue: string read Frevenue; property cost: string read Fcost; property profit: string read Fprofit; property status: string read Fstatus; property lagging: boolean read Flagging; property testing: boolean read Ftesting; property listed: boolean read Flisted; property timestamp: UInt32 read Ftimestamp; property ResponseTime: TDateTime read FResponseTime write FResponseTime; end; парсинг получается всего в одну строчку var CoinXMRPtofit := TJson.JsonToObject<TCoinProfit>(ResponseStr, [joIndentCasePreserve]); // готовый объект добавляем в Объект словарь CoinsProfitList: TObjectDictionary<String, TCoinProfit>; CoinsProfitList.AddOrSetValue(cXMR, CoinXMRPtofit);

там еще аттрибуты поддерживаются. можно писать: ['json_string'] JsonString: string и он с жсона конвернет в стандартизированный по имени объект. по сути можно изображать MVC паттерн

Похожие вопросы

Обсуждают сегодня

а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
ну так че, сделать програмулину, в которую можно добавлять в Едиты свои строчки кода(закладки) а потом по ним прыгать. ну и сохраняться они естественно будут той програмуленно...
Kraszx
15
Приветствую всех!)) Подскажите, а кто мог бы написать на делфи движок (самую базу) интерпретатора очень легковесного и минималистичного языка программирования? Язык - проце...
Моринаро
8
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <assert.h> #include <limits.h> long long avg3(long long a, long long b, long long c) { if (a == b && b =...
Malformed C
4
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: SplashScreen(), ); } } class SplashScreen e...
Anway
3
Карта сайта