Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

TMS WEBCore JSON取出新手法発見

さて,TMSWebCoreのJSON取り出しですが、

ものすごい手法を発見してしまいました。

 

わかりやすさでは前回を上回ります。

効率は?ですが、ご紹介します。

var s:string;
    v:integer;
begin
 s:=SocketData.jsobject.toString;

 asm
 let jo=JSON.parse(s);
 v=jo.hoge;  end;
 
 v:=v+1;
  :
  ; end;

です。

気持ち悪い構文が並んでいますね(笑)

asm ~ end;

の間のBlockにはJavaScriptが書けます。

なので、受信したJSON文字列 sをJavaScriptに渡します。

ここの変数の授受はシームレスなんです。

となればJSON.parseでJavaScriptObjectにしてしまえば

Valueの取り出しは何がこようとも

jo.hoge の記法で代入できます。

ブロックを抜けた時点で vには値が入ってますので、

Pascal側で使えます。

JSONが配列であれば、

 v=jo.ARRAY[5];

のように取ってこれます。

 

この手法はObject PascalでのJSONの扱いをみれば,はるかに簡単です。

v:=(jo.GetValue('hoge') as TJSONNumber).AsInt;

だったのが、

v=jo.hoge;

で終わりますね。

変数が共用できるのが驚愕じゃないですかね?

 

まあ考えてみればすべてトランスパイルされてJavaScriptになるので

できるよね。といったところでしょうか。

文法が混ざるので、非常に気持ち悪いですが、

asm構文は古くはTurboPascalでアセンブラ

インライン記法として導入されていた、歴史のある文法ですね。

たまたまなのか、異言語混在の手法としてはセンスを感じます。

 

その後、下記の記事を見つけました。

TMSによる記事ですが、大変詳しくJavaScriptDelphi

関係について解説してあります。

唯一無二の解説かと。

勉強になります。

www.tmssoftware.com

ではでは。