TList를 사용하여 소트하는 방법을 모르겠습니다.
처음엔 링크드리스트로 구현 했는데..
메모리 Free가 잘 안되더라구요..
혹시
소트하는 방법아시면.. 부탁드립니다...
너무 막연해서??
type TListSortCompare = function (Item1, Item2: Pointer): Integer;
procedure Sort(Compare: TListSortCompare);
procedure TForm1.FormButton1Click(Sender: TObject);
type
PMyList = ^AList;
AList = record
I: Integer;
C: Char;
end;
var
MyList: TList;
ARecord: PMyList;
B: Byte;
Y: Word;
begin
MyList := TList.Create;
New(ARecord);
ARecord^.I := 100;
ARecord^.C := 'Z';
MyList.Add(ARecord); {Add integer 100 and character Z to list}
New(ARecord);
ARecord^.I := 200;
ARecord^.C := 'X';
MyList.Add(ARecord); {Add integer 200 and character X to list}
{ Now paint the items onto the paintbox )
Y := 10; {Variable used in TextOut function}
//전 이곳에서 MyList를 I값에 있는 상수로 소트하고자
//합니다..
//그런데.. 그걸 잘 모르겠더라구요.. 어떻게 해야되는지를..
------>>> MyList.Sort(????);
for B := 0 to (MyList.Count - 1) do
begin
ARecord := MyList.Items[B];
Canvas.TextOut(10, Y, IntToStr(ARecord^.I)); {Display I}
Y := Y + 30; {Increment Y Value again}
Canvas.TextOut(10, Y, ARecord^.C); {Display C}
Y := Y + 30; {Increment Y Value}
end;
{ Cleanup: must free the list items as well as the list }
for B := 0 to (MyList.Count - 1) do
begin
ARecord := MyList.Items[B];
Dispose(ARecord);
end;
MyList.Free;
end;
|