2015年11月2日 星期一

delphi 如何實現動態物件

delphi 如何實現動態物件  


有什方法可以在不知到物件數目的情況下
在執行時期動態產生物件
就像是ValArray一樣可以變大變小

1.宣告動態陣列, 例: edt: array of TEdit; 
2.設定動態陣列的長度, 例: SetLength(edt, 10);
3.動態 create 元件, 例:
var
  i: integer;
  
begin
  for i := 0 to 9 do
  begin
    edt[i] := TEdit.Create;
    edt[i].Parent := Form1;
    edt[i].Left := ...;
    edt[i].Top := ...;
  end;
end;
  
SetLength(edt, 10); 

它適合""非物件""的動態ㄝ
我看它的原始碼是利用記憶體抓取的方法
我有查到有一種物件TObjectList不知到這個行不行
或是更上層的Tlist也市不錯用的
  
 
我想會出現記憶體錯誤的情形在於重設陣列大小之前
還必須手動將不要用的 TEdit Free 掉
  
TObjectList 也是個很好的選擇!
  
就是要如何釋放掉ㄋ
用TEdit[i].free OR TEdit[i].Destroy
OR SetLength(TEdit,0) OR freeMem(@TEdit) OR......
前三種都是過嚕會出現"無效指標"

edt[i].Free;
edt[i] := nil;

FreeAndNil(edt[i]);

沒有留言: