일반 Delphi 2009 TObjectList
을 사용하는 방법을 이해해야합니다. 내 비 TObjectList
시도가델파이 : TObjectList를 사용하는 방법 <T>?
TSomeClass = class(TObject)
private
FList1: Array of TList1;
FList2: Array of TList2;
public
procedure FillArray(var List: Array of TList1; Source: TSource); Overload;
procedure FillArray(var List: Array of TList2; Source: TSource); Overload;
end;
처럼 보였다, TList1
및 TList2
같은 생성자 constructor TParent.Create(Key: string; Value: string);
을 상속합니다. 그러나 다른 전문 분야 (예 : 다른 비공개 필드)로 인해 동일한 유형이되지는 않습니다. 그래서 나는 두 개의 거의 동일한 채우기 방법을 쓸 필요가 : FillArray(List: Array of TList2; Source: TSource);
와
procedure TSomeClass.FillArray(var List: Array of TList1; Source: TSource);
begin
for i := 0 to Source.List1.Count - 1 do begin
SetLength(List, Length(List) + 1);
List[i] := TList1.Create(Source.List1[i].Key, Source.List1[i].Value);
end;
end;
전반에 걸쳐 TList2
와 TList1
의 교체를 제외하고, 동일되고. 내가 이해하는 한, 이것은 TObjectList
과 단일 채우기 방법을 사용하여 깔끔하게 우회 될 수 있습니다. 그러나 나는 이것에 대해 어떻게 생각하는지 모른다. 아무도 이것에 좋은 포인터가 있습니까? 감사!
1. TClass는 클래스 이름에 대해 매우 나쁜 선택입니다. 2. List가 FillChar에서 var로 선언되지 않았습니다. –
3. SetLength (List, Length (List)); 실제로 아무것도하지 않습니다 –
Uwe : 예, 정말 나쁜 이름입니다. 이것과 다른 제안들을 편집했습니다. :) – conciliator