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.
XE3随笔10:TSuperType的更多相关文章
- XE3随笔20:几个和当前路径相关的新函数
偶然从 SysUtils 里发现了几个路径相关的函数, 以前没见过, 可能是 Delphi XE3 新增的: GetLocaleDirectory(); GetLocaleFile(); Locale ...
- XE3随笔6:SuperObject 的 JSON 对象中还可以包含 "方法"
SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: IS ...
- hibernate注解随笔—10月8日
hibernate注解(herbinate4 jar包注解可用,使用hibernate3.3注解失败) 如果javabean与数据库中表名一致(不区分大小写),则注解不用写@Table(name=&q ...
- XE3随笔21:系统默认语言与系统支持的语言列表
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- XE3随笔18:实例 - 解析 Google 关键字搜索排名
同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名 ...
- XE3随笔19:实例 - 借用 Google 实现全文翻译
调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + ...
- XE3随笔17:实例 - 模拟 Google 搜索
本例测试效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics ...
- XE3随笔16:将字符串转换成 UTF8 编码的函数
这种转换一般用于网页地址; 我不知道 Delphi 是不是有现成的函数, 用到了就写了一个. //函数: function ToUTF8Encode(str: string): string; var ...
- XE3随笔15:使用 IXMLHTTPRequest 简单获取网页源代码
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
随机推荐
- Hadoop学习10--常用命令记录帖
1.列出所有正在执行的任务 hadoop job -list 2.kill任务 hadoop job -kill 任务名
- iis 应用程序池看不到 .net framework 4.0
我的情况是,先配置了iis,然后再安装.net framework 4.0 进去设置应用程序池的时候,没有找到 .net framework 4.0 ,经过一番尝试,无效,最后无奈重启. 好了.
- for语句
一.for语句的格式格式1:for (控制变量初始化表达式;条件表达式;增量表达式) 语句1; 格式2:for (控制变量初始化表达式;条件表达式;增量表达式){ 语句1; 语句2; -} 注意 ...
- jquery 监听radio选中,取值
$(document).ready(function(){ $("input[name=discount]").each(function(){ $(this).click(fun ...
- 解决box-flex不均等分的问题
我想当你上手css3的时候后一定为他的强大而感到震惊,但是震惊之后带来的一定是苦恼,因为他太TM变态了! 我之所以这么说是因为我今天写box-flex的时候遇到了一个可以让我蛋碎的问题~~~ 首先,b ...
- mysql 不是主键不能删除的保护问题解决办法?
select * from t_answerexams; delete from t_answerexams where selectid = 'c4582502-8b27-44 ...
- 【EF学习笔记07】----------加载关联表的数据 贪婪加载
讲解之前,先来看一下我们的数据库结构:班级表 学生表 贪婪加载 //贪婪加载 using (var db = new Entities()) { var classes = db.Classes.Wh ...
- MSSQLSERVER之发布-分发-订阅
一.环境 发布服务器 O S: Windows servier 2003 64位 Soft: Microsoft SqlServer 2008 R2 I P: 192.168.3.70 HOST-NA ...
- 返回记录结构时,如果需要返回为nil时 应该怎么办。
- 种类并查集(POJ 1703)
1703 -- Find them, Catch them http://poj.org/problem?id=1703 题目大意:有2个敌对帮派,输入D a b表示a,b在不同帮派,输入A a b表 ...