| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- unit SuperObjectCase;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, superobject, Buttons;
- type
- TSuperObjectCaseFrm = class(TForm)
- mmo1: TMemo;
- btn1: TButton;
- btn2: TButton;
- btn3: TButton;
- btn4: TButton;
- btn5: TButton;
- btn6: TBitBtn;
- btn7: TBitBtn;
- procedure btn1Click(Sender: TObject);
- procedure btn2Click(Sender: TObject);
- procedure btn3Click(Sender: TObject);
- procedure btn4Click(Sender: TObject);
- procedure btn5Click(Sender: TObject);
- procedure btn6Click(Sender: TObject);
- procedure btn7Click(Sender: TObject);
- private
- function GetServerID(ALoginName: string): string;
- function GetAndClearServerID(var ALoginName: string): string;
- function RemoverBridgeServerID(ALoginName: string): string;
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- SuperObjectCaseFrm: TSuperObjectCaseFrm;
- implementation
- {$R *.dfm}
- var
- TestJsonStr: string =
- '{"s":"0"' +
- '"bs" : {' +
- '"1" : [{"l":"lslqq", "v":1}, {"l":"lslqq", "v":1}],' +
- '"2" : [{"l":"lssfbcjf", "v":1}, {"l":"lssfbcjf", "v":1}]' +
- '} ' +
- '}';
- NewProtocol: string = '["g.create.r":{"id":"","ret":0,"group":{"id":"6d54247063414c99a7bb4ddc8b7a24bb","name":"ѧϰȺ"}}]';
- procedure TSuperObjectCaseFrm.btn1Click(Sender: TObject);
- var
- jo: TSuperObject;
- ja: TSuperArray;
- begin
- jo := TSuperObject.Create(stArray);
- ja := jo.AsArray();
- ja.S[0] := 'lqq';
- ja.S[1] := 'baidu';
- mmo1.Lines.Add(jo.AsJSon());
- end;
- procedure TSuperObjectCaseFrm.btn2Click(Sender: TObject);
- var
- l: string;
- begin
- l := '0578+0-lslqq';
- mmo1.Lines.Add(GetAndClearServerID(l));
- mmo1.Lines.Add(l);
- l := '0-lslqq';
- mmo1.Lines.Add(GetAndClearServerID(l));
- mmo1.Lines.Add(l);
- l := 'lslqq';
- mmo1.Lines.Add(GetAndClearServerID(l));
- mmo1.Lines.Add(l);
- end;
- procedure TSuperObjectCaseFrm.btn3Click(Sender: TObject);
- var
- jobs, jo1: ISuperObject;
- ja: TSuperArray;
- item: TSuperAvlEntry;
- iLoop: Integer;
- S: string;
- begin
- jobs := SO(TestJsonStr).O['bs'];
- s := SO(TestJsonStr).S['s'];
- for item in jobs.AsObject do
- begin
- mmo1.Lines.Add(item.Name);
- ja := item.Value.AsArray;
- mmo1.Lines.Add(item.Value.AsJSon());
- for iLoop := 0 to ja.Length - 1 do
- begin
- mmo1.Lines.Add(ja[iLoop].S['l'] + ':' + ja[iLoop].S['v']);
- end;
- end;
- end;
- procedure TSuperObjectCaseFrm.btn4Click(Sender: TObject);
- var
- jo: ISuperObject;
- begin
- jo := SO();
- jo.N['arr'] := SO('[]');
- jo.A['arr'].Add('12312');
- jo.B['True'] := True;
- jo.B['False'] := False;
- mmo1.Lines.Add(jo.AsJSon());
- end;
- procedure TSuperObjectCaseFrm.btn5Click(Sender: TObject);
- begin
- mmo1.Lines.Add(RemoverBridgeServerID('0578+0-lqq'));
- mmo1.Lines.Add(RemoverBridgeServerID('0-lqq'));
- mmo1.Lines.Add(RemoverBridgeServerID('+0-lqq'));
- end;
- procedure TSuperObjectCaseFrm.btn6Click(Sender: TObject);
- var
- jo: ISuperObject;
- begin
- jo := SO(NewProtocol);
- if jo <> nil then
- begin
- mmo1.Lines.Add(jo.AsJSon());
- end;
- end;
- function TSuperObjectCaseFrm.GetServerID(ALoginName: string): string;
- var
- iStart, iEnd, Len: Integer;
- begin
- Result := '';
- iEnd := AnsiPos('-', ALoginName);
- if iEnd < 0 then
- Exit;
- iStart := AnsiPos('+', ALoginName);
- if iStart < 0 then
- iStart := 0;
- if iEnd <= iStart + 1then
- Exit;
- Result := Copy(ALoginName, iStart + 1, iEnd - iStart - 1);
- end;
- function TSuperObjectCaseFrm.GetAndClearServerID(var ALoginName: string): string;
- var
- iStart, iEnd, Len: Integer;
- begin
- Result := '';
- iEnd := AnsiPos('-', ALoginName);
- if iEnd < 0 then
- Exit;
- iStart := AnsiPos('+', ALoginName);
- if iStart < 0 then
- iStart := 0;
- if iEnd <= iStart + 1then
- Exit;
- Result := Copy(ALoginName, iStart + 1, iEnd - iStart - 1);
- ALoginName := Copy(ALoginName, iEnd + 1, Length(ALoginName) - iEnd);
- end;
- function TSuperObjectCaseFrm.RemoverBridgeServerID(ALoginName: string): string;
- var
- iStart: Integer;
- begin
- iStart := AnsiPos('+', ALoginName);
- if iStart < 0 then
- iStart := 0;
- Result := Copy(ALoginName, iStart + 1, Length(ALoginName) - iStart);
- end;
- procedure test(const This, Params: ISuperObject; var Result: ISuperObject);
- begin
- ShowMessage('Hello');
- end;
- procedure TSuperObjectCaseFrm.btn7Click(Sender: TObject);
- var
- jo: ISuperObject;
- rs: ISuperObject;
- begin
- jo := SO('{}');
- rs := SO('{}');
- jo.M['test'] := test;
- mmo1.Lines.Add(jo.AsJSon());
- jo.M['test'](nil,nil, rs);
- end;
- end.
|