人気ブログランキング |
<   2020年 01月 ( 2 )   > この月の画像一覧

Delphi で JSON のデータを作成する。

Delphi 10.3で作っているソフトのToDolistにリマインダー機能を追加しようと思って
設定ファイルをiniファイルからJSON形式に変更することを決めて今日一日中格闘してた。

Delphi で JSON のデータを作成する。_b0003577_19580984.png

作成しようとしていたJSONデータは以下のような物です。
最初のFormはウィンドウサイズやウィンドウの位置を示していて、次のLoopListがリマインダー機能の設定データ群。

{
   "Form":{
      "Top":"524",
      "Left":"1339",
      "WindowWidth":"551",
      "WindowHeight":"478"
   },
   "LoopList":[
      {
         "ID":"001",
         "GruopID":"0",
         "Item":"田中太郎さんとミーティング",
         "Day":"2日",
         "Time":"12:00",
         "backgroundColor":"White"
      },
      {
         "ID":"002",
         "GruopID":"2",
         "Item":"月刊誌購入",
         "Day":"4日",
         "Time":"14:00",
         "backgroundColor":"White"
      },
      {
         "ID":"004",
         "GruopID":"1",
         "Item":"英会話",
         "Day":"月水金",
         "Time":"19:30",
         "backgroundColor":"White"
      }
   ]
}

uses に「System.JSON」を追加しないとJSONを扱えないので注意です。
フォームにはMemoButtonが1つずつ置きました。

procedure TForm1.Button1Click(Sender: TObject);
var
  JSON, JSON_Form, JSON_LoopList_Node: TJSONObject;
  JSONArray_LoopList: TJSONArray;
  I: Integer;
  number: string;
begin
  JSON := TJSONObject.Create; // 一番大きな箱を作成
  JSON_Form := TJSONObject.Create; // ウィンドウサイズと位置の箱を作成
  JSONArray_LoopList := TJSONArray.Create; // LoopList 全データを入れた箱を作成

  try
    begin
      JSON_Form.AddPair('Top', Form1.Top.ToString);
      JSON_Form.AddPair('Left', Form1.Left.ToString);
      JSON_Form.AddPair('WindowWidth', Form1.Width.ToString);
      JSON_Form.AddPair('WindowHeight', Form1.Height.ToString);
      Memo1.Lines.Add(JSON_Form.ToString);
      Memo1.Lines.Add('----------------');
      JSON.AddPair('Form', JSON_Form);
      JSON.AddPair('LoopList', JSONArray_LoopList);
      for I := 1 to 32 - 1 do  // サンプルデータ作成
      begin
        JSON_LoopList_Node := TJSONObject.Create; // LoopList の1行分のデータの箱を作成、ひとかたまりを作る前にCreateを実行しないと繋がったデータになってしまう。

        number := Format('%.4d', [I]);
        JSON_LoopList_Node.AddPair('ID', number);
        JSON_LoopList_Node.AddPair('GruopID', Random(3).ToString);
        JSON_LoopList_Node.AddPair('Item', 'John Smith');
        JSON_LoopList_Node.AddPair('Day', Random(30).ToString + '日');
        JSON_LoopList_Node.AddPair('Time', '12:00');
        JSON_LoopList_Node.AddPair('backgroundColor', 'White');

        JSONArray_LoopList.Add(JSON_LoopList_Node);

//        Memo1.Lines.Add('-----');
//        Memo1.Lines.Add(JSON.ToString);
      end;

      Memo1.Lines.Add('----------------');
      Memo1.Lines.Add(JSON.ToString);
    end;
  finally
     JSON.Free;
  end;

end;


JSON形式は初めて作ったので正しい書式なのかどうか判定するのにこのサイト:JSON Formatter & Validator を使用しました。

by arigayas | 2020-01-20 19:37 | Delphi | Trackback
2020年1月からのアニメ
2019年10月からのアニメ

5分未満のアニメは赤文字。
5分~10分ぐらいのアニメはこの色の文字。

2011年10月以前から放送開始
  • ワンピース ワノ国編 第二部開始

2016年4月から放送開始
  • ぼのぼの

2018年4月から放送開始

  • ゲゲゲの鬼太郎


2019年10月から放送開始

  • ちはやふる3
  • 僕のヒーローアカデミア第4期
  • GYAO!
    • ちはやふる3
    • 七つの大罪 神々の逆鱗
  • 劇場版作品
    • この世界の(さらにいくつもの)片隅に [2019年12月20日 劇場公開 / 2020年1月14日に109シネマズ 湘南にて観た]


2020年1月から放送開始


Blu-ray レコーダー放送終了済&未視聴分 [2019年12月11日現在]
  • ヴィンランド・サガ [2020年1月8日に1話~3話、11日に4話、14日に5話~11話、15日に12話~13話、24日に14話、29日に15話、31日に16話~20話、2月1日に21話~24話(最終話)を見た。]
  • PSYCHO-PASS サイコパス 3 [2020年3月18日に1話、19日に2話、20日に3話、28日に4話、29日に5話~6話、30日に7話、4月1日に8話(最終話)を見た。]
  • BEASTARS [2020年2月22日に1話~3話、23日に4話~7話、3月15日に8話~10話、16日に11話~12話(最終話)を見た。]
  • ハイスコアガール/ハイスコアガールⅡ(無印,Ⅱを明記するとややこしいので通しの話数で記載) [2019年12月31日に13話、2020年1月1日に14話~16話、1月2日に17話~19話、4日に20話~22話、5日に23話~24話(最終話)を見た。]



More

by arigayas | 2020-01-01 00:00 | 雑記 | Trackback