human78

XE3随笔10:TSuperType


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses SuperObject;

//类型
procedure TForm1.Button1Click(Sender: TObject);
function GetJsonType(I: ISuperObject): string;
begin
case I.DataType of
stNull: Result := 'stNull';
stBoolean: Result := 'stBoolean';
stDouble: Result := 'stDouble';
stInt: Result := 'stInt';
stObject: Result := 'stObject';
stArray: Result := 'stArray';
stString: Result := 'stString';
stMethod: Result := 'stMethod';
end;
end;
var
jo: ISuperObject;
begin
jo := SO('{A:1, B:2}');
ShowMessage(GetJsonType(jo)); {stObject}
jo := SO;
ShowMessage(GetJsonType(jo)); {stObject}

jo := SO('abc');
ShowMessage(GetJsonType(jo)); {stString}

jo := SO(123);
ShowMessage(GetJsonType(jo)); {stInt}
jo := SO('123');
ShowMessage(GetJsonType(jo)); {stInt}

jo := SO(3.14);
ShowMessage(GetJsonType(jo)); {stDouble}
jo := SO('3.14');
ShowMessage(GetJsonType(jo)); {stDouble}

jo := SO(False);
ShowMessage(GetJsonType(jo)); {stBoolean}

jo := SO('[1,2,3,a,b,c]');
ShowMessage(GetJsonType(jo)); {stArray}

jo := TSuperObject.Create(stMethod);
ShowMessage(GetJsonType(jo)); {stMethod}

jo := SO('null');
ShowMessage(GetJsonType(jo)); {stNull}
end;

//判断
procedure TForm1.Button2Click(Sender: TObject);
var
jo: ISuperObject;
begin
jo := SO('[]');

if jo.DataType = stArray then ShowMessage('stArray');

if ObjectIsType(jo, stArray) then ShowMessage('stArray');
end;

end.

posted on 2015-08-13 10:19  human78  阅读(110)  评论(0编辑  收藏  举报

导航