Вверх ↑
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
#1: 2009-09-27 14:37:40 ЛС | профиль | цитата
Хотелось бы в компонентах типа

Add(StrCat,6097310,245,112)
{
}
получать результат не только при вызове метода, но и просто при использовании нижней точки, без вызова метода. Это часто очень удобно.
карма: 9
0
Ответов: 387
Рейтинг: 34
#2: 2009-09-29 02:39:56 ЛС | профиль | цитата
согласен
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#3: 2009-09-29 02:42:52 ЛС | профиль | цитата
Нижние точки чреваты наличием дополнительных переменных, которые не всегда нужны, но занимают память. Я, лично, не против, но разговор этот уже был и закончился ничем
карма: 22

0
Ответов: 387
Рейтинг: 34
#4: 2009-09-29 02:49:27 ЛС | профиль | цитата
ну...
если их сделать включаемыми и они будут отнимать ресурсы, тогда можно без них...

p.s. подобные мысли о точках приходят от желания сократить к-во элементов на экране.
карма: 0

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#5: 2009-09-29 08:42:34 ЛС | профиль | цитата
Karl писал(а):
они будут отнимать ресурсы

Ресурсы отнимают не методы самих точек, а переменные и присвоение значений этим переменным в основных методах
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2009-09-29 18:49:48 ЛС | профиль | цитата
nesco писал(а):
Нижние точки чреваты наличием дополнительных переменных, которые не всегда нужны, но занимают память. Я, лично, не против, но разговор этот уже был и закончился ничем

при каком же это проектировании появляются дополнительные переменные? Я подозреваю, что автор топика имел ввиду такое поведение(на примере StrCat)


procedure THI_StrCat._var_Result;
var dt:TData;
s1,s2:string;
begin
dtNull(dt);
s1 := ReadString(dt, _data_Str1, _prop_Str1);
s2 := ReadString(dt, _data_Str2, _prop_Str2);
dtString(_Data, s1 + s2);
end;
никаких "дополнительных переменных, которые не всегда нужны, но занимают память" тут(и во всех прочих элементах) нет и быть не должно
карма: 27
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#7: 2009-09-29 18:54:14 ЛС | профиль | цитата
А вообще-то я не так понял (че-то я стал невнимательным, нехорошо), действительно, такой метод получение результата очень бывает полезным, как reCalc в MathParse
Кстати, а почему это не пришло на ум никому раньше
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#8: 2009-09-29 19:03:30 ЛС | профиль | цитата
Потому что никто не парился над этим, считал что "потом спрошу, сейчас некогда, а если не спрошу, то другие спросят... все верно" ИМХО
------------ Дoбавленo в 19.04:
А вообще много где пригодятся такие точки, и будет HiAsm - горизонтально-вертикальное программирование
карма: 10
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#9: 2009-09-29 19:20:43 ЛС | профиль | цитата
Assasin писал(а):
и будет HiAsm - горизонтально-вертикальное программирование

Да оно и так есть, просто, на один элемент меньше
карма: 22

0
Ответов: 4631
Рейтинг: 749
#10: 2009-09-30 11:42:40 ЛС | профиль | цитата
Dilma писал(а):
никаких "дополнительных переменных, которые не всегда нужны, но занимают память" тут(и во всех прочих элементах) нет и быть не должно

Да, а чтобы не повторять один и тот же код, например, в процедурах *._var_Result и *.doResult, делается private функция типа function *.GetResult(args...):resulttype и вызывается из *._var_Result и *.doResult, а на выход подается результат этой функции.
карма: 26

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2009-09-30 12:33:05 ЛС | профиль | цитата
nesco писал(а):
Кстати, а почему это не пришло на ум никому раньше

потому, что это затычка вытекающая из несовершенства технологии. В пакетах на базе FTCG для достижения того же самого результата не нужно клепать по две точки на свойство - решение о буферизации принимается еще на этапе сборки проекта. В стандартном же пакете создание дубликатов для нижних точек несмотря на удобство дальнейшего использования вносит "кривизну" в проектируемые схемы. Еще одним минусом такого "усовершенствования" будет отсутствие стандарта в поведении элементов - скажем если для StrCat можно сделать две точки Result и bufResult, то для какого-нибудь элемента WindowPosition придется создавать уже 4 - Left, Top, bufLeft и bufTop. Если этого не делать, то рано или поздно кто-то спросит, почему у StrCat есть точка bufXXX, а у WindowPosition нет? И мы снова вернемся в этот топик. И наконец последнее НО - при портировании элементов с такими точками в пакеты на базе FTCG возникает не простая делема - поддерживать в элементе точку, которая там совершенно не имеет смысла или нет ради совместимости при портировании схем?

Netspirit писал(а):
Да, а чтобы не повторять один и тот же код, например, в процедурах *._var_Result и *.doResult, делается private функция типа function *.GetResult(args...):resulttype и вызывается из *._var_Result и *.doResult, а на выход подается результат этой функции.

и это предложение является еще одним доказательством тупиковой ветви развития пакета, пораждающей заплатки на каждом шагу. В данном случае будет использована дополнительная инструкция call и забивание стека, что скажется на производительности элемента даже без использования этой новой точки.

Отсюда заключение: наличие такой точки может быть оправдано только у элементов, которые в силу своей особенности достаточно часто используются в вертикальном потоке - Math,Strcat и др. Но, ввиду причин, изложенных выше выигрыш от такой поддержки представляется сомнительным.
карма: 27
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#12: 2009-09-30 12:43:23 ЛС | профиль | цитата
Dilma писал(а):
Но, ввиду причин, изложенных выше выигрыш от такой поддержки представляется сомнительным

Откуда можно сделать вывод -- оставляем пока все "как есть". Кому надо, тот прекрасно может использовать переадресатор потока EventFromData
карма: 22

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2009-09-30 13:32:05 ЛС | профиль | цитата
есть еще вариант организации логики работы элементов аналогично пакетам FTCG через проверку Assigned(_var_XXX.event) (аналог в FTCG - linked(XXX)), но такое решение будучи самым оптимальным с точки зрения схемы и совместимости является самым не оптимальным с точки зрения эффективности получаемой программы.
карма: 27
0
Ответов: 1926
Рейтинг: 172
#14: 2009-10-01 10:32:29 ЛС | профиль | цитата
nesco, я как-то про EventFromData позабыл, действительно, можно и так.
карма: 9
0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)