Форум: "Базы";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизЧто работает быстрее? Найти похожие ветки
← →
paxer (2003-07-03 14:36) [0]Что работает быстрее при получении значения поля:
s:=q.Fields.FieldByNumber(NumField).AsString;
или
s:=q.Fields[FieldName]?
← →
sniknik (2003-07-03 14:40) [1]s:=q.Fields[0]
← →
Johnmen (2003-07-03 14:42) [2]1
← →
Serginio (2003-07-03 14:45) [3]Fields внутри представляет собой массив филдов соответственно обращение лучше производить через индекс а не имя поля. В зависимости от количества полей происходит последовательное сравнение полей причем AnsiCompareText (если бы был бинарный поиск или хэш то не так сказывалось) и получаешь только на этом замедление в разы.
← →
paxer (2003-07-03 14:45) [4]Противоречие. А может кто обоснует?
← →
Zacho (2003-07-03 14:47) [5]
> paxer (03.07.03 14:45)
А в чем противорече-то ? Я нигде не увидел :)
← →
Serginio (2003-07-03 14:51) [6]Ты наверное перепутал
s:=q.Fields.[NumField].AsString;
или
s:=q.Fields.FieldByName(FieldName).AsString;
← →
Anatoly Podgoretsky (2003-07-03 14:51) [7]paxer (03.07.03 14:36)
А повторить в длинном цикле ну ни как?
← →
paxer (2003-07-03 14:52) [8]sniknik сказал третью версию, Johnmen сказал, что будет быстрее как в примере 1. Я и хотел, чтобы кто-то обосновал. Или при
s:=q.Fields.FieldByNumber(NumField).AsString;
происходят те же действия, как при
s:=q.Fields[NumField]?
← →
paxer (2003-07-03 14:54) [9]Попробую повторить в длинном цикле. Но как-то когда кто-то знает теорию, то это надежней. И интересней. И полезней.
← →
Zacho (2003-07-03 15:00) [10]
> paxer (03.07.03 14:54)
Причем здесь теория ? Посмотри исходники.
← →
Serginio (2003-07-03 15:01) [11]q.Fields[NumField] возвращает TField
а
s:=q.Fields.FieldByNumber(NumField).AsString;
S:=q.Fields[NumField].AsString;
строку
← →
Johnmen (2003-07-03 15:04) [12]Рейтинг :
s:=qFieldName.AsString; если поле определено в списке полей
s:=q.Fields[FieldIndex];
s:=q.Fields.FieldByNumber(FieldName).AsString;
s:=q[FieldName];
← →
Johnmen (2003-07-03 15:07) [13]К неточностям синтаксиса - не придираться. Это смысл.
← →
Serginio (2003-07-03 15:28) [14]Ты наверное про это спрашиваешь:
TDataSet
property FieldValues[const FieldName: string]: Variant read GetFieldValue write SetFieldValue; default;
function TDataSet.GetFieldValue(const FieldName: string): Variant;
var
I: Integer;
Fields: TList;
begin
if Pos(";", FieldName) <> 0 then
begin
Fields := TList.Create;
try
GetFieldList(Fields, FieldName);
Result := VarArrayCreate([0, Fields.Count - 1], varVariant);
for I := 0 to Fields.Count - 1 do
Result[I] := TField(Fields[I]).Value;
finally
Fields.Free;
end;
end else
Result := FieldByName(FieldName).Value
end;
Смотри исходники.
← →
paxer (2003-07-03 15:56) [15]2 serginio
Спасибо. Именно этого мне не хватало для понимания.
← →
Anatoly Podgoretsky (2003-07-03 16:04) [16]Johnmen © (03.07.03 15:04)
Я добавлю с индексом 0
s:=qFieldName.Value
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c