Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Доступ к полям - Как быстрее?


AlexanderSK ©   (2003-03-25 16:15:00) 

Как лучше работать с полями?
FieldByName или X := FindField и дальше работаем через X?

Заранее спасибо!


passm   (2003-03-26 09:33:00) [1]

Обычно поступаю как <Соловьев © (25.03.03 16:34)> про это и писал <passm © (25.03.03 16:19)>. Помимо скорости есть плюс в удобстве при описании абстрактных компонент/форм и использовании конкретных свойств полей (TStringField, TFloatField etc.).

Johnmen © (26.03.03 01:10)> Вспоминается анекдот про жену программиста с ребенком в зоопарке :))


Johnmen   (2003-03-26 01:10:00) [2]

>MsGuns © (25.03.03 20:29)
>Но, блин, я упорный, я его, гада, массой возьму !

Не, лучше ж..ой, в смысле усидчивостью... :)))))))))))


MsGuns   (2003-03-25 20:29:00) [3]

>Val © (25.03.03 20:22)

Сразу не врубился. Юмор тонок для "юного исследователя TIBDataSet" (меня т.е.) ;)))

Задрал меня уже этот датасет - ну не хочет ни апдетиться, ни рефрешиться, ни позиционироваться ни вообще ни хрена ! Но, блин, я упорный, я его, гада, массой возьму !


Val   (2003-03-25 20:22:00) [4]

:) Сергей, я говорил не о сравнении с Fields[i], а о сравнении со статическим набором полей. Ведь это(получение статического набора) делается при присвоении поля в примере DoNothing, но тогда непонятно, почему бы просто не получить этот набор как в Соловьев © (25.03.03 16:34), хотя, судя по смайлу, passm © (25.03.03 16:55) просто прикололся :)


MsGuns   (2003-03-25 20:12:00) [5]

>Val © (25.03.03 19:48)
>по идее быстрее, но нафиг

Быстрее в смысле, что не надо просматривать всю коллекцию на предмет совпадения св-ва "Имя поля" ? А вот если по индексу (Fields[i]), так шустрее ? Чушь собачья, извини за резкость. Поиск в коллекции (фактически есть база и циклически меняемое смещение - индекс) весь происходит в ОП, причем для коллекции полей - очень небольшого размера. Проц, и так прохлаждающийся перманентно, схавает этот цикл, не заметив. Другое дело, что прога занимает энное кол-во мегабайт виртуала и виндузе часто-густо приходится свопироваться - так это беда не FieldsByName, а либо горе-программера, либо ограниченности ресурсов компа.

Зато в читабельности перл Fields[i+y*n] или MyField.As... сродни китайской грамоте. Когда вижу подобный код, хочется выпить с горя !


Val   (2003-03-25 19:48:00) [6]

>MsGuns © (25.03.03 19:14)
по идее быстрее, но нафиг. Cм. Johnmen © (25.03.03 16:46)
>les © (25.03.03 17:16)
ускользнет контроль над полями, лучше конкретизировать.


MsGuns   (2003-03-25 19:14:00) [7]

>passm © (25.03.03 16:55)

И что, так будет быстрее ? В смысле затрат Проц-Память.
Сильно сомневаюсь, хоть компиллятор и оптимизирующий.


les   (2003-03-25 17:16:00) [8]


> Доступ к полям - Как быстрее?

DataSet<поле>.As...

> Нет у меня дизайна!

Тогда бистрее - TDataSet.Fields[index].As...


passm   (2003-03-25 16:55:00) [9]

AlexanderSK © (25.03.03 16:42)>
procedure DoNothing(DataSet: TDataSet); { :)) }
var
f1, f2: TField;
begin
{...}
f1:= DataSet.FieldByName("FIELD1");
f2:= DataSet.FieldByName("FIELD2");
{ use f1 and f2}
end;


Johnmen   (2003-03-25 16:46:00) [10]

По моему мнению, не надо заморачиваться на быстродействие, ты его не почувствуешь, и обращаться к полям FieldByName("MyFieldName") и к значениям полей FieldByName("MyFieldName").As...


AlexanderSK   (2003-03-25 16:42:00) [11]

>Соловьев ©
Нет у меня дизайна! Точнее в дизайне не известно какие будут поля!


Соловьев   (2003-03-25 16:34:00) [12]

не 2-й, а просто в дизайне дважды кликаешь на компоненте.


AlexanderSK   (2003-03-25 16:31:00) [13]

>passm ©
Поля получаются путем загрузки данных.

>Johnmen ©
Т.е. второй вариант?


Johnmen   (2003-03-25 16:19:00) [14]

Создать список поле для НД и далее -
MySecretField.As...:=...
самое быстрое, но не самое понятное и красивое...


passm   (2003-03-25 16:19:00) [15]

AlexanderSK © (25.03.03 16:15)> Если поля создавать явно в Design Time


Наверх

Титульная страница Поиск, карта сайта Написать письмо