panel: TPanel;

 TForm1.Button1Click(Sender: TObject);

  panel := TPanel.Create(Self);
  panel.Parent := Self;

   TButton.Create(panel)    
    Parent := panel;
    Caption := ;
  ;
;

 TForm1.Button2Click(Sender: TObject);

   Assigned(panel) 
    FreeAndNil(panel); ;


二、使用接口:



 

 Unit1;




  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;


  TForm1 = (TForm)
    Button1: TButton;
     Button1Click(Sender: TObject);
  ;

    IBass = Interface
     GetName: ;
     SetName( AName: );
     Name:   GetName  SetName;
  ;

    TBass = (TInterfacedObject, IBass)
  
    FName: ;
  
     GetName: ;
     SetName( AName: );
  
     Create( AName: );
  ;


  Form1: TForm1;





 TForm1.Button1Click(Sender: TObject);

  X: IBass;

  X := TBass.Create();
  ShowMessage(X.Name);
  X.Name := ;
  ShowMessage(X.Name);
  
;



 TBass.Create( AName: );

  FName := AName;
;

 TBass.GetName: ;

  Result := FName;
;

 TBass.SetName( AName: );

  FName := AName;
;

.


三、使用结构:



 

 Unit1;




  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;


  TForm1 = (TForm)
    Button1: TButton;
     Button1Click(Sender: TObject);
  ;

    TBass = 
  
    FName: ;
     SetName( AName: );
  
     Create( AName: );
     Name:   FName  SetName;
  ;


  Form1: TForm1;





 TForm1.Button1Click(Sender: TObject);

  X: TBass;

  X := TBass.Create();
  ShowMessage(X.Name);
  X.Name := ;
  ShowMessage(X.Name);
  
;



 TBass.Create( AName: );

  FName := AName;
;

 TBass.SetName( AName: );

  FName := AName;
;

.


四、在 initialization 中建立、在 finalization 中释放:



 

 Unit1;




  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;


  TForm1 = (TForm)
    Button1: TButton;
     Button1Click(Sender: TObject);
  ;


  Form1: TForm1;






  List: TStringList;

 TForm1.Button1Click(Sender: TObject);

  List.Clear;
  List.Add();
  ShowMessage(List.Text);
;


  List := TStringList.Create;

  List.Free;

.


五、使用动态数组而不是 TList、TStringList 等:



 

 TForm1.Button1Click(Sender: TObject);

  arr: Array  ;
  i: Integer;
  s: ;

   i :=    
  
    SetLength(arr, Length(arr)+);
    arr[High(arr)] := StringOfChar(Char(i+), );
  ;
   s  arr  ShowMessage(s);
;

 TForm1.Button2Click(Sender: TObject);

  arr: TArray<>;
  i: Integer;
  s: ;

   i :=    
  
    SetLength(arr, Length(arr)+);
    arr[High(arr)] := StringOfChar(Char(i+), );
  ;
   s  arr  ShowMessage(s);
;


六、使用 TObjectList 而不是 TList:



 

 System.Contnrs;

 TForm1.Button1Click(Sender: TObject);

  list: TObjectList;
  i: Integer;
  btn: TButton;

  list := TObjectList.Create;
   i :=    
  
    btn := TButton.Create(Self);
     btn  
      Caption := Format(, [i+]);
      Parent := Self;
      Top := Height * i;
      Left := Width * i  ;
    ;
    list.Add(btn);
  ;
  ShowMessage();
  list.Free;
;

 TForm1.Button2Click(Sender: TObject);

  list: TList;
  i: Integer;
  btn: TButton;

  list := TList.Create;
   i :=    
  
    btn := TButton.Create(Self);
     btn  
      Caption := Format(, [i+]);
      Parent := Self;
      Top := Height * i;
      Left := Width * i  ;
    ;
    list.Add(btn);
  ;
  ShowMessage();
  list.Free;
;


七、使用 TObjectList<T> 而不是 TList<T>:



 

 System.Generics.Collections;

 TForm1.Button1Click(Sender: TObject);

  list: TObjectList<TButton>;
  i: Integer;
  btn: TButton;

  list := TObjectList<TButton>.Create;
   i :=    
  
    btn := TButton.Create(Self);
     btn  
      Caption := Format(, [i+]);
      Parent := Self;
      Top := Height * i;
      Left := Width * i  ;
    ;
    list.Add(btn);
  ;
  ShowMessage();
  list.Free;
;

 TForm1.Button2Click(Sender: TObject);

  list: TList<TButton>;
  i: Integer;
  btn: TButton;

  list := TList<TButton>.Create;
   i :=    
  
    btn := TButton.Create(Self);
     btn  
      Caption := Format(, [i+]);
      Parent := Self;
      Top := Height * i;
      Left := Width * i  ;
    ;
    list.Add(btn);
  ;
  ShowMessage();
  list.Free;
;


八、使用结构体而不是结构体指针:



 

 Area(rect: PRect): Integer;

  Result := rect.Width * rect.Height;
;


 TForm1.Button1Click(Sender: TObject);

  P: PRect;

  New(P);
  P^ := Rect(, , , );
  ShowMessage(IntToStr(Area(P)));   Dispose(P);
;


 TForm1.Button2Click(Sender: TObject);

  R: TRect;

  R := Rect(, , , );
  ShowMessage(IntToStr(Area(@R))); ;