// General purpose container of a list of objects
ObjList : TuList;
ObjList := TuList.Create();
ObjList.Add(MyObject);
MyObject := ObjList.GetItems(i);
ObjList.Free;
// u_TList.pas
unit u_TList;
interface
uses
Windows, Classes, SysUtils,
StdCtrls,
ch_LogMessages;
type
TuList = class
private
m_List : TList;
public
constructor Create();
destructor Destroy(); override;
procedure Clear();
function Count: Integer;
function Add( Item:Pointer ):Integer;
function GetItems(Index: Integer): Pointer;
procedure Sort(Compare: TListSortCompare);
procedure Delete(Index: Integer);
end;
implementation
{ TuList }
function TuList.Add(Item: Pointer): Integer;
begin
Result := m_List.Add(Item);
end;
procedure TuList.Clear;
begin
m_List.Clear;
end;
function TuList.Count: Integer;
begin
Result := m_List.Count;
end;
constructor TuList.Create;
begin
m_List := TList.Create;
end;
procedure TuList.Delete(Index: Integer);
begin
m_List.Delete(Index);
end;
destructor TuList.Destroy;
begin
m_List.Free;
inherited;
end;
function TuList.GetItems(Index: Integer): Pointer;
begin
if (Index < 0) or (Index >= m_List.Count ) then begin
Index := 0;
end;
Result := m_List.Items[Index];
end;
procedure TuList.Sort(Compare: TListSortCompare);
begin
m_List.Sort(Compare);
end;
end.
2010年1月5日 星期二
TuList - General purpose container of a list of objects
訂閱:
張貼留言 (Atom)
最主要是 GetItems, 內鍵的TList 本身沒有做邊界限制,在這裡做擴充
回覆刪除C++其實也沒有邊界限制, 不過Delphi的除錯器很神奇的, 當掉時, 居然不是停在 GetItem呼叫的那行, 而是顯示 0xXXXXXXXXXX, 天知道當在那裡, 只好花些時間處理一下.
回覆刪除PS:問了寫delphi好幾年的人事, 要怎麼解, 回答:無解, 請在叫用時, 先寫判斷式合法在叫用, 實在不懂為什麼不寫一個函式包起來就好!
回覆刪除