如果说世界上有鬼,那么,这个鬼就藏在我的程序中 这是一个关于使用Json数据的一个例子,本例子为了方便演示“鬼”的存在,作了精简,希望大虾能够把鬼捉出来 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,UJsonD6;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } JsonPara:TJsonObject; procedure Test(str:string); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var SubJson,Json:TJsonObject;begin json:=TJsonObject.create; json.put('FuncName','Open'); json.put('FilePath',''); SubJson:=TJsonObject.create; SubJson.put('FileUID','aaa-bb-ccc-ddd'); SubJson.put('SFileName','ttttttttt.dot'); json.put('FileDataInfo',SubJson); Test(Json.AsJson); json.Free;end;procedure TForm1.Test(str:string);var subJson:TJsonObject;begin ShowMessage(subJson.getString('FileUID')); exit; JsonPara.AsJson:=str;end;end. unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,UJsonD6;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } JsonPara:TJsonObject; procedure Test(str:string); public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);var SubJson,Json:TJsonObject;begin json:=TJsonObject.create; json.put('FuncName','Open'); json.put('FilePath',''); SubJson:=TJsonObject.create; SubJson.put('FileUID','aaa-bb-ccc-ddd'); SubJson.put('SFileName','ttttttttt.dot'); json.put('FileDataInfo',SubJson); Test(Json.AsJson); json.Free;end;procedure TForm1.Test(str:string);var subJson:TJsonObject;begin ShowMessage(subJson.getString('FileUID')); exit; JsonPara.AsJson:=str;end;end. 一不小心,重发了代码各位请注意procedure TForm1.Test(str:string);var subJson:TJsonObject;begin ShowMessage(subJson.getString('FileUID')); exit; JsonPara.AsJson:=str;end; 这段代码,Test在函数Button1Click中被调用,subJson没有作任何初始化,甚至没有创建,居然可以正确读取FileUID的信息,另外exit;JsonPara.AsJson:=str;可以说是两句废话,但是,删除JsonPara.AsJson:=str;,subJson就无法读取FileUID的信息,这到底是为什么??????? 不会是因为有了JsonPara.AsJson:=str; 才能自动初始化的吧虽然在执行的时候没作用 有愿意捉鬼的请留下Email,我把源代码发过去 不会是因为有了JsonPara.AsJson:=str;才能自动初始化的吧虽然在执行的时候没作用------------------------想不通啊,根本就没有执行这句话,我测试的时候把代码优化功能关闭,也是如此,一句根本就不执行的语句如何影响另外一个对象? 而且,JsonPara 也没有实例化,就算编译器自作主张先执行JsonPara.AsJson:=str; 理论上,这一样会崩溃有需要源代码的,请留下Email,我把代码发过去 你把代码传到资源里去,大家一起来“捉”http://d.download.csdn.net/down/1283448/ylm163net下不了 UJsonD6???????????? 就是Ujson.pas,网上可以搜索到,这个单元主要是做了一个类TJsonObject用于解析Json为了方便使用,我自己增加了一个属性AsJson,就把单元名称改了,以区别原先的文件 我已经上传了整套代码,但是我看不到我的资源,我晚上在想办法发布UjsonD6这个文件 这是源代码http://www.jsyisu.com/JsonError.rar 请 熟悉 线程编程 的朋友,进来帮帮忙 请教TChart的两个问题(Mark、Legend) 问一条SQL语句,和DBGRID显示问题 请教系统日志维护问题。 如何通过控件名称查出是否存在该控件。。 image的继承问题 ADOQUERY 小问题!~~~ 在中间层建立多个RDM时(一个子系统一个),是公用一个database好还是每个rdm用一个好! ★intraweb中如何实现多个文件选择后一起上传???而不是选一个发一个比较费劲 delphi如何实现记事本反的字体功能 100分求字母A-Z,0-9的漂亮图片,大概60*60左右
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,UJsonD6;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
JsonPara:TJsonObject;
procedure Test(str:string);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
SubJson,Json:TJsonObject;
begin
json:=TJsonObject.create;
json.put('FuncName','Open');
json.put('FilePath',''); SubJson:=TJsonObject.create;
SubJson.put('FileUID','aaa-bb-ccc-ddd');
SubJson.put('SFileName','ttttttttt.dot');
json.put('FileDataInfo',SubJson); Test(Json.AsJson);
json.Free;
end;procedure TForm1.Test(str:string);
var
subJson:TJsonObject;
begin
ShowMessage(subJson.getString('FileUID'));
exit;
JsonPara.AsJson:=str;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,UJsonD6;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
JsonPara:TJsonObject;
procedure Test(str:string);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
SubJson,Json:TJsonObject;
begin
json:=TJsonObject.create;
json.put('FuncName','Open');
json.put('FilePath',''); SubJson:=TJsonObject.create;
SubJson.put('FileUID','aaa-bb-ccc-ddd');
SubJson.put('SFileName','ttttttttt.dot');
json.put('FileDataInfo',SubJson); Test(Json.AsJson);
json.Free;
end;procedure TForm1.Test(str:string);
var
subJson:TJsonObject;
begin
ShowMessage(subJson.getString('FileUID'));
exit;
JsonPara.AsJson:=str;
end;end.
各位请注意
procedure TForm1.Test(str:string);
var
subJson:TJsonObject;
begin
ShowMessage(subJson.getString('FileUID'));
exit;
JsonPara.AsJson:=str;
end; 这段代码,Test在函数Button1Click中被调用,subJson没有作任何初始化,甚至没有创建,居然可以正确读取FileUID的信息,
另外
exit;
JsonPara.AsJson:=str;
可以说是两句废话,但是,删除JsonPara.AsJson:=str;,subJson就无法读取FileUID的信息,
这到底是为什么???????
JsonPara.AsJson:=str;
才能自动初始化的吧虽然在执行的时候没作用
JsonPara.AsJson:=str;
才能自动初始化的吧虽然在执行的时候没作用
------------------------
想不通啊,根本就没有执行这句话,我测试的时候把代码优化功能关闭,也是如此,一句根本就不执行的语句如何影响另外一个对象?
JsonPara.AsJson:=str;
理论上,这一样会崩溃
有需要源代码的,请留下Email,我把代码发过去
下不了
????????????
为了方便使用,我自己增加了一个属性AsJson,就把单元名称改了,以区别原先的文件
http://www.jsyisu.com/JsonError.rar