我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知
我是怀疑泛型数组 setlength后会不会清零,弄了个小demo,不知道为什么我会有这个想法,难道是我看数据结构入魔了,记得记录指针需要另类释放问题。
记不清了 脑袋完蛋了 上demo ,事实证明setlength(xxx,0)这样来清空 泛型数组没有任何问题,不会有内存泄露
。
unit Unit4;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm4 = class(TForm)
btn1: TButton;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TPerson = record
name: string;
age: Integer;
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
uses qjson;
procedure TForm4.btn1Click(Sender: TObject);
var
MyQj: TQJson;
MyPersons: TArray<TPerson>;
I: Integer;
begin
MyQj := TQJson.Create;
try
mmo1.Lines.Clear;
//向数组添加数据
for I := 0 to 2 do
begin
SetLength(MyPersons, Length(MyPersons) + 1);
MyPersons[High(MyPersons)].name := '奥巴马'+I.ToString;
MyPersons[High(MyPersons)].age := I;
end;
//显示出来看看
MyQj.FromRecord<TArray<TPerson>>(MyPersons);
mmo1.Lines.Add(MyQj.AsJson);
mmo1.Lines.Add(sLineBreak+'------------------'+sLineBreak);
//清空泛型数组
SetLength(MyPersons, 0);
//清空后再显示出来看看
MyQj.FromRecord<TArray<TPerson>>(MyPersons);
mmo1.Lines.Add(MyQj.AsJson);
finally
MyQj.Free;
end;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown := True;
end;
end.
