TList<T>
사용 : (이 또한 새로운 델파이 버전에 TArray<T>
과 같이 쓸 수있다) array of T
를 사용
var
Edits : TList;
I : Integer;
begin
Edits := TList.Create;
try
Edits.Add(Edit1);
Edits.Add(Edit2);
// etc.
// You must be careful with array bounds here, Inputs and Edits must have the same length
Assert(Length(Inputs) = Length(Edits));
for I := 0 to Edits.Count - 1 do
Inputs[I] := TEdit(Edits[I]).Text = '1';
finally
Edits.Free;
end;
end;
: 제네릭없이 이전 델파이 버전
uses
System.Generic.Collections;
var
Edits : TList<TEdit>;
I : Integer;
begin
Edits := TList<TEdit>.Create;
try
Edits.AddRange([
Edit1,
Edit2,
// etc.
Edit8
);
// You must be careful with array bounds here, Inputs and Edits must have the same length
Assert(Length(Inputs) = Length(Edits));
for I := 0 to Edits.Count - 1 do
Inputs[I] := Edits[I].Text = '1';
finally
Edits.Free;
end;
end;
을 (A TList
사용)을
을
var
Edits : array of TEdit;
I : Integer;
begin
SetLength(Edits, 8);
Edits[0] := Edit1;
Edits[1] := Edit2;
// etc.
// You must be careful with array bounds here, Inputs and Edits must have the same length
Assert(Length(Inputs) = Length(Edits));
for I := 0 to Edits.Count - 1 do
Inputs[I] := Edits[I].Text = '1';
end;
TArray<T>.Create
와 TArray<T>
사용 :
var
Edits : TArray<TEdit>;
I : Integer;
begin
Edits := TArray<TEdit>.Create(
Edit1,
Edit2,
// etc.
Edit8
);
// You must be careful with array bounds here, Inputs and Edits must have the same length
Assert(Length(Inputs) = Length(Edits));
for I := 0 to Edits.Count - 1 do
Inputs[I] := Edits[I].Text = '1';
end;
이 TDictionary<K, V>
사용 :
이 개선 방법에는 여러 가지가 있습니다
uses
System.Generic.Collections;
type
TInput = class
public
Active: Boolean;
end;
var
InputByEdit : TObjectDictionary<TEdit, TInput>;
Pair : TPair<TEdit, TInput>;
begin
InputByEdit := TObjectDictionary<TEdit, TInput>.Create([doOwnsValues]);
try
InputByEdit.Add(Edit1, TInput.Create);
InputByEdit.Add(Edit2, TInput.Create);
// etc.
for Pair in InputByEdit do
Pair.Value.Active := Pair.Key.Text = '1';
finally
InputByEdit.Free;
end;
end;
:
- 컨테이너 클래스 멤버 확인 및 작성시에 한 번을 채울가 .
Components
및 ComponentCount
을 사용하여 컨테이너를 동적으로 채 웁니다.
또한 사용성을 향상시키기 위해 또한 그래서 당신이 Text
을 구문 분석 할 필요는 없습니다 TCheckBox
대신 TEdit
의 사용을 고려하고 있습니다.
많은 방법이 있습니다. 어떤 버전의 델파이? –
편집 컨트롤을 배열에 넣기 –