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 ответов

17 просмотров
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 паттерн

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта