Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизПодскажите как правильнее делать a функции/процедуре... Найти похожие ветки
← →
pavel_guzhanov © (2006-11-23 08:41) [0]Для примера. В функции/процедуре в самом начале получается набор данных из базы, при помощи Query.Open. в функции используется в том числе и значение одного поля из этого набора (Query.FieldByName("Field1").asinteger). Это значение используется несколько раз. Как правильнее - каждый раз, при использовании этого значения писать эту строчку (Query.FieldByName("Field1").asinteger), или объявить переменную типа Integer, присвоить ей в начале функции/процедуры значение, и оперировать уже переменной?
ps. Integer я привел для примера, может быть любой тип данных...
pps. простите, если путано задал вопрос, лучше сформулировать не смог :0))
← →
Александр Иванов © (2006-11-23 08:46) [1]С переменной быстрее, но под нее выделяется память.
← →
StriderMan © (2006-11-23 08:48) [2]
> Это значение используется несколько раз. (Query.FieldByName("Field1").asinteger), или объявить переменную
> типа Integer
конечно данные из переменной быстрее получишь чем значение поля, тем более ..ByName (хотя там имена индексированы, и все происходит довольно быстро).
Я обычно завожу переменную если больше двух раз используется. Да и код читабельнее получается.
← →
Чапаев © (2006-11-23 09:25) [3]Если в цикле, то точно переменную заводить надо. ;-)
← →
Anatoly Podgoretsky © (2006-11-23 09:35) [4]> pavel_guzhanov (23.11.2006 08:41:00) [0]
Переменная это одна штука.
Набор данных это несколько штук
← →
pavel_guzhanov © (2006-11-23 09:52) [5]
> Переменная это одна штука.
> Набор данных это несколько штук
Это я понимаю :0)). Вопрос состоит в том, как лучше поступить при использовании значения конкретного одного поля из набора данных.
← →
Чапаев © (2006-11-23 09:53) [6]> Вопрос состоит в том, как лучше поступить при использовании
> значения конкретного одного поля из набора данных
Согласись, дать правильный ответ может только конкретный программист, выполняющий конкретно этот проект. ;-)
← →
oxffff © (2006-11-23 09:54) [7]Поместить в регистр процессора и писать на ассемблере. :)
← →
Anatoly Podgoretsky © (2006-11-23 09:57) [8]> pavel_guzhanov (23.11.2006 09:52:05) [5]
А никак, несколько значений в одну переменную не поместить, разве что сумму
← →
Александр Иванов © (2006-11-23 10:21) [9]> [5] pavel_guzhanov © (23.11.06 09:52)
Что-то все запуталось сильнее. Первоначально понял что происходит следующее:Query.Open;
Query.First;
d := Query.FieldByName("Field1").AsInteger;
b := Query.FieldByName("Field1").AsInteger;
t := Query.FieldByName("Field1").AsInteger;
В этом случае нужно использовать переменую. Но если код выглядит так, то никакого смысла в переменной нет:Query.Open;
Query.First;
d := Query.FieldByName("Field1").AsInteger;
Query.Next;
b := Query.FieldByName("Field1").AsInteger;
Query.Next;
t := Query.FieldByName("Field1").AsInteger;
← →
pavel_guzhanov © (2006-11-23 10:43) [10]вопрос в том, что правильнее:
Query.Open;
Query.First;
d := Query.FieldByName("Field1").AsInteger+5;
b := Query.FieldByName("Field1").AsInteger+8;
t := Query.FieldByName("Field1").AsInteger+9;
или
Query.Open;
Query.First;
s:=Query.FieldByName("Field1").AsInteger;
d := s+5;
b := s+8;
t := s+9;
?
← →
Чапаев © (2006-11-23 10:57) [11]Второе.
← →
Чапаев © (2006-11-23 10:59) [12]Правильнее и в том смысле, что теоретически где-нибудь между
d := Query.FieldByName("Field1").AsInteger+5;
b := Query.FieldByName("Field1").AsInteger+8;
t := Query.FieldByName("Field1").AsInteger+9;
значение поля измениться может.
Хотя, опять же, может быть по условию тебе нужно получить именно новые данные...
← →
Плохиш © (2006-11-23 11:05) [13]
> Чапаев © (23.11.06 10:59) [12]
В данном конкретном случае, ни теоретически, ни практически измениться не может.
← →
pavel_guzhanov © (2006-11-23 11:05) [14]Спасибо, понял.
← →
Чапаев © (2006-11-23 11:08) [15]> [13] Плохиш © (23.11.06 11:05)
Почему?
← →
Jeer © (2006-11-23 11:10) [16]Потому, что запрос уже сделан и это есть енкоторый временной срез данных.
← →
Чапаев © (2006-11-23 11:15) [17]Понял.
← →
Anatoly Podgoretsky © (2006-11-23 14:09) [18]> Александр Иванов (23.11.2006 10:21:09) [9]
В таком виде смысла вообще нет ни для первого, ни для второго кода.
← →
Anatoly Podgoretsky © (2006-11-23 14:10) [19]> Чапаев (23.11.2006 10:57:11) [11]
Первое
← →
Anatoly Podgoretsky © (2006-11-23 14:11) [20]> Плохиш (23.11.2006 11:05:13) [13]
Зуб даешь?
Последнее время по форумам часто бродят автообновители.
← →
Александр Иванов © (2006-11-23 14:34) [21]> [18] Anatoly Podgoretsky © (23.11.06 14:09)
Придираетесь :) Это был пример.
← →
Anatoly Podgoretsky © (2006-11-23 16:51) [22]Александр Иванов © (23.11.06 14:34) [21]
Ни в коей мере или смысл в обеих вариантах, или нет в обеих.
← →
Плохиш © (2006-11-23 17:40) [23]
> Anatoly Podgoretsky © (23.11.06 14:11) [20]
> > Плохиш (23.11.2006 11:05:13) [13]
>
> Зуб даешь?
Во время выполнения этих 5/6 строчек кода программа просто не будет отвлекаться на какие-то там автообновители :-)
← →
Anatoly Podgoretsky © (2006-11-23 18:54) [24]> Плохиш (23.11.2006 17:40:23) [23]
Зуб получил, аж целую челюсть.
Большая благодарность :-)
← →
Petr V. Abramov © (2006-11-23 22:18) [25]если в цикле не выполняется процедура, по как проще. Если выполняется, то переменная.
т.к. FieldByName - еще тот немалый код
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c