본문 바로가기

Development/Delphi

FieldByName 속도 향상


FieldByName() 내부적으로 이름검색을 위해 loop 를 돌린다.
아래처럼 각각의 필드를 먼저 검색해서 찾은후 필드의 데이터셋만 이동하도록 한다.
필드.dataset 의 커서가 이동할 뿐 더이상 필드를 찾는 중복작업은 하지 않아도 된다.
var
  F1, F2, F3: TField;

Grid.RowCount := Query.RecordCount;
J := 0;
F1 := Query.FieldByName('Value1');
F2 := Query.FieldByName('Value2');
F3 := Query.FieldByName('Value3');
while not Query.EOF do
begin
    Grid.Cells[0,J]:=F1.AsString;
    Grid.Cells[1,J]:=F2.AsString;
    Grid.Cells[2,J]:=F3.AsString;
    // etc for other columns.
    Inc(J);
    Query.Next();
end;