首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

代码被编译器优化了?【散分过国庆】,该如何解决

2013-11-23 
代码被编译器优化了?【散分过国庆】procedure TForm1.btn2Click(Sender: TObject)varst, st1: TStringList

代码被编译器优化了?【散分过国庆】
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;

热点排行