Вниз
Скачать: CL | DM;

Что работает быстрее?   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
7-78177
DBDev
2003-05-14 17:28
2003.07.24
Какой функцией получить путь к локальной папке


14-78070
Lenza
2003-07-07 12:39
2003.07.24
Watches


6-78021
yaJohn
2003-05-19 13:55
2003.07.24
Перехват траффика.


8-78005
reticon
2003-03-31 22:16
2003.07.24
TMediaPlayer


1-77839
Алексей А.
2003-07-11 12:31
2003.07.24
Resize формы при при bsNone




   Наверх