Главная страница
    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.009 c
1-77842
captive
2003-07-11 15:26
2003.07.24
Помогите с формами разобраться..


14-78118
sucer
2003-07-08 05:00
2003.07.24
Как получить изображение?


3-77730
ikis
2003-06-27 15:43
2003.07.24
INSERT INTO MYTABLE (DateTimeField) VALUE (


3-77750
bura
2003-06-27 16:03
2003.07.24
Обрыв сети.


3-77800
Demka
2003-07-02 10:58
2003.07.24
select from TQuery





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский