Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.011 c
14-78100
Vlad Oshin
2003-07-07 18:03
2003.07.24
Сутки. Рассказ.


1-77991
rotor
2003-07-11 13:50
2003.07.24
Tree+CheckBox возможно ли это???


1-77835
SergeyVP
2003-07-11 15:45
2003.07.24
Как узнать видим компонент или нет?


9-77704
Antichacker
2003-01-31 10:21
2003.07.24
Существует ли какая-либо документация по GLScene?(Eng)


14-78044
Andryk
2003-07-09 15:24
2003.07.24
Что с отправкой сообщений?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский