读书人

代码被编译器优化了?【散分过国庆】,

发布时间: 2013-11-23 10:52:51 作者: rapoo

代码被编译器优化了?【散分过国庆】
procedure TForm1.btn2Click(Sender: TObject);
var
st, st1: TStringList;
begin
st := nil;
st := TStringList.Create;
st1 := st.Create;
try
st1.Add('FirstDemo');
st.Add('Ok');
ShowMessage(Format('Item count:%d, %d', [st1.Count, st.Count]));
if st = st1 then
ShowMessage('I known!');
finally
FreeAndNil(st1);
end;
end;
[解决办法]
还没放假 接分
[解决办法]
............
[解决办法]
TClass.Create和Object.Create差别还不小呢,看这个例子帮助理解.


procedure TForm1.FormCreate(Sender: TObject);
var
n : integer;
P : Pointer;
Obj : TEdit;
begin
n := TEdit.InstanceSize; //得到TEdit对象需要的内存大小
GetMem(P , n); //申请对象的内存空间
FillChar(P^ , n , 0); //清0
PPointer(P)^ := TEdit; //这句非常关键,把内存空间(结构)和类关联起来
TEdit(P).Create(Self); //这句的作用就是实现对象的初始化,也就是把内存空间结构中的其他元素填好
Obj := P;
//到此,对象就建立好了,以上加起来和 Obj := TEdit.Create(Self);没区别

Obj.Top := 10;
Obj.Left := 30;
Obj.Text := '还可以这样..
Obj.Parent := Self;
end;

读书人网 >.NET

热点推荐