Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Delphi vs. C++   Найти похожие ветки 

 
Акуличев Дмитрий   (2004-09-08 12:55) [400]


> Сколько же ежиков плачут, колются, но продолжают грызть
> кактус :)

А ещё миллион мух не может ошибаться.
:)


 
MU ©   (2004-09-08 12:58) [401]

Хочу отметить еще один вопрос - мнение (психология) заказчиков...
казалось бы, им д.б. все равно на чем написан проект, главное, чтобы он работал и выполнял все необходимые функции.
был у нас большой проект на FoxPro DOS - много успешных внедрений и проч., но со временем стали раздаваться голоса, что это вчерашний день, что виндоуз это - круто и т.д. хотя кассиру или бухгалтеру ведь все равно DOS это или Windows, им надо чтобы цифры были правильные.
Перешли на Дельфи. теперь нет-нет да и слышится от заказчиков-руководителей: "на дельфи серьезные проекты не пишутся, .NET, C# и прочий набор где-то услышанных ими звуков".


 
Акуличев Дмитрий   (2004-09-08 12:59) [402]


> Суслик ©   (08.09.04 12:46) [399]
>
> Вопрос: Почему _AddRef не вынесен в доступную фукнкция,
> как это сделано для finlize и initilize? Как вы думаете,
> в чем причины?

Как же не вынесен, если это часть любого интерфейса?
Название с чёрточкой смущает?


 
Игорь Шевченко ©   (2004-09-08 13:05) [403]

Акуличев Дмитрий   (08.09.04 12:55) [400]


> А ещё миллион мух не может ошибаться.


Эт к Visual Basic :))


 
jack128 ©   (2004-09-08 13:12) [404]

Суслик ©   (08.09.04 12:46) [399]
Вопрос: Почему _AddRef не вынесен в доступную фукнкция, как это сделано для finlize и initilize? Как вы думаете, в чем причины

А если не секрет зачем?? Где используется initialize/finalize я себе представляю, а вот зачем нужен явный вызов _AddRefArray не очень..


 
Акуличев Дмитрий   (2004-09-08 13:13) [405]


> Игорь Шевченко ©   (08.09.04 13:05) [403]
> Эт к Visual Basic :))

Нет. Эт к ссылкам на большинство как авторитет.


 
jack128 ©   (2004-09-08 13:16) [406]

jack128 ©   (08.09.04 13:12) [404]
кстати, про интерфейсы вы тут вроде разобрались ;-) а формат строк/дин массивов расписан, коль жить надоело, можешь сам использовать их счетчик ссылок ;-)


 
Димитрий ©   (2004-09-08 13:35) [407]

А еще в последнее время набирает популярность язык программирования BrainFuck :)


 
Акуличев Дмитрий   (2004-09-08 13:42) [408]


> А еще в последнее время набирает популярность язык программирования
> BrainFuck :)

А ещё есть язык, у которого весь алфавит состит только из символов
#9 #10 #12 #13 #32
Забыл только как называется.


 
Суслик ©   (2004-09-08 13:59) [409]


> Акуличев Дмитрий   (08.09.04 12:59) [402]

Ты не просек, про что я.
_AddRef это не из интерфейсов - это функция в system... посмотри - рядом с _initilize.

под невынесенностью я понимаю недокументированность.


> jack128 ©   (08.09.04 13:12) [404]
> Суслик ©   (08.09.04 12:46) [399]
> А если не секрет зачем?? Где используется initialize/finalize
> я себе представляю, а вот зачем нужен явный вызов _AddRefArray
> не очень..

Для копирования больших кусков памяти.

Например - есть record с длинными строками. Тебе нужно его скопировать. Хорошо было бы move + addref. Конечно, для записей это можно и так сделать - просто присваиваньшем. Но существуют задачи, где было бы нужно анонимно копировать область памяти конечно зная ее typeInfo.


 
Суслик ©   (2004-09-08 14:00) [410]


> jack128 ©   (08.09.04 13:16) [406]

зачем мне самому лезть в формат строк и дин масивов.
есть addref, только вызывать ее надо без параметров.
теоретически это можно (я даже пробовал).
мне непонятно почему эта ф-я недокументирована.


 
имя   (2004-09-08 14:12) [411]

Удалено модератором


 
Ihor Osov'yak ©   (2004-09-08 14:13) [412]

> мне непонятно почему эта ф-я недокументирована.

По той же причине, почему не нужно вмешиваться в процесс управления жызнью обьектов, хостящих интерфейсы.

Зы.. Я уже приводил цитату, относительно програмированния под платформу майкрософт и соблюдения рекомендаций майкрософт.. Немного перефразируете его относительно программирования с использованием инструментария борланда и рекомендаций борланда. Я имею ввиду о работе с обьектами с управляемым временем жызни.

Зы2. Вы бы лучше хорошо разобралисть с тем, что уже есть, а потом бы велосипед изобретали... Да, кстати, как подсказывает жизненный опыт - чем больше знаешь, тем реже возникает потребность и желание изобретать велосипед.


 
Суслик ©   (2004-09-08 14:18) [413]


> Ihor Osov"yak ©   (08.09.04 14:13) [412]
По той же причине, почему не нужно вмешиваться в процесс управления жызнью обьектов, хостящих интерфейсы.


Все опнятно.
Зачем тогда initilize и finilize документированы?
чем они концептуально отличаются от system._addref?

Очень прошу - не отвечайте общими словами.
Вопрос то в общем весьма конкретный.

ЗЫ. Еще огромная просьба - сбавить назидательность. Ранее я поблагодарил тебя за продуктивную дискуссию. Чрезвычайно был бы рад и благодарен, если бы мне не пришлось менять свое мнение.
:)) Если уж я справшиваю, то наверное разобрался? :)

ЗЗЫ. Из того, что вы до сих пор говрите про интерфейсы делаю вывод, что был непонят исходный вопрос. См. system по строке поиска _initialize и ниже на 4-5 строк - функция _addref.


 
vuk ©   (2004-09-08 14:19) [414]

to Ihor Osov"yak ©   (08.09.04 14:13) [412]:
>По той же причине, почему не нужно вмешиваться в процесс
>управления жызнью обьектов, хостящих интерфейсы.
Вмешиваться иной раз все-таки нужно. Но только делать это нужно с полным пониманием происходящего.


 
Суслик ©   (2004-09-08 14:20) [415]


> vuk ©   (08.09.04 14:19) [414]
Вмешиваться иной раз все-таки нужно. Но только делать это нужно с полным пониманием происходящего.


Во-во.
Именно для вмешательства и существуют (в частности) initilize и finilize. Вот весь вопрос, почему нет addref?


 
KSergey ©   (2004-09-08 14:21) [416]

> [413] Суслик ©   (08.09.04 14:18)
> Зачем тогда initilize и finilize документированы?
> чем они концептуально отличаются от system._addref?

Прощу прощения, а скажите, почему они в один ряд встали? initilize и finilize - одно. А addref при чем тут? Или обобщаем понятия объект/модуль?

А еще такой вопрос: почему (Д5, если критично) нельзя написать finilize без initilize??


 
Суслик ©   (2004-09-08 14:23) [417]


> KSergey ©   (08.09.04 14:21) [416]

вы совсем не о том
initialize + f1


 
Суслик ©   (2004-09-08 14:30) [418]

Чую интузиазма у участников нет.

Вообще initilize/finalize кто-нить пользуется?


 
vuk ©   (2004-09-08 14:32) [419]

to Суслик ©   (08.09.04 14:20) [415]:
>Во-во.
Я говорил только про интерфейсы.


 
Суслик ©   (2004-09-08 14:36) [420]


> vuk ©   (08.09.04 14:32) [419]

А про все остальное: строки, дин. массивы и пр., варианты?
Там не надо вмешиваться?
Зачем же тогда документированы initilize/finilize?
Я бы может и сам был бы рад не пользоваться, но такая хорошая документированная фича. Да и сами ребята из борланда где-то видел этим пользуются.

Ты сам пользуешься initilize/finilize?


 
KSergey ©   (2004-09-08 14:37) [421]

> [417] Суслик ©   (08.09.04 14:23)

Прошу прощения. Сильно я ляпнул ;)


 
jack128 ©   (2004-09-08 14:37) [422]

Суслик ©   (08.09.04 14:30) [418]
Вообще initilize/finalize кто-нить пользуется?

я иногда. Но редко. Только потому, что их использование навязывает сторонний компонент..


 
Акуличев Дмитрий   (2004-09-08 14:37) [423]


> Но существуют задачи, где было бы нужно анонимно копировать
> область памяти конечно зная ее typeInfo.

Приводи типы и будет тебе щасье.


 
Суслик ©   (2004-09-08 14:41) [424]


> Акуличев Дмитрий   (08.09.04 14:37) [423]
Приводи типы и будет тебе щасье.

Иногда так и делаю. Это не всегда удобно.

Например надо очистить элементы массива variant с 10 по 20. Можно пробежаться и присвоить им всем null иди unassigned, например. А можно вызывать

finlize(a[10]^, 11);


 
Суслик ©   (2004-09-08 14:41) [425]

виноват

> finlize(a[10]^, 11);

finlize(a[10], 11);


 
Игорь Шевченко ©   (2004-09-08 14:43) [426]


> Например надо очистить элементы массива variant с 10 по
> 20. Можно пробежаться и присвоить им всем null иди unassigned,
> например. А можно вызывать
>
> finlize(a[10]^, 11);


А через пару месяцев поиметь проблемы на тему: "а что же я написал"


 
Суслик ©   (2004-09-08 14:46) [427]


> А через пару месяцев поиметь проблемы на тему: "а что же
> я написал"

Кому поиметь? Мне?
Повторю - это документированная функция.
Я не поимею. Другой? Нажми ф1.

Была бы недокументированная - не в жизь не пользовался бы - никогда так не делаю.


 
Акуличев Дмитрий   (2004-09-08 14:48) [428]


> Суслик ©   (08.09.04 14:30) [418]
> Чую интузиазма у участников нет.
>
> Вообще initilize/finalize кто-нить пользуется?

Я пользовался. Когда хранил в TList записи со строками.

Дело в том, что необходимость в Initialize/Finalize я вижу. А вот в ручном управлении счётчиком -- нет.


 
Акуличев Дмитрий   (2004-09-08 14:53) [429]


> Зачем же тогда документированы initilize/finilize?

Там где они документированы, там же и написано зачем.

Initialize should be used only in situations where a variable is dynamically allocated by other means than the New standard procedure.

Finalize should be used only in situations where a dynamically allocated variable is deallocated by other means than the Dispose procedure.


 
Суслик ©   (2004-09-08 14:53) [430]


> Акуличев Дмитрий   (08.09.04 14:48) [428]


> Дело в том, что необходимость в Initialize/Finalize я вижу.
> А вот в ручном управлении счётчиком -- нет.

Уточню ответ:
Наверное так
"А вот в ручном управлении счётчиком интерфейсов -- нет."
Да?

Т.е. для строк, например, видишь?
Не могу понять в чем для тебя разница.

Ну представь себе, что я в интерфейса вижу "плодотворную идею" саму по себе без привязки к com. Более того, я не только вижу, но и применяю такое видение, о чем пока пожалеть не пришлось.

Вот скажи с обозначенной выше точки зрения - чем для меня отличается скажем строка и интерфейс с точки зрения управления их жизнью?


 
Danilka ©   (2004-09-08 14:55) [431]

[430] Суслик ©   (08.09.04 14:53)
> Т.е. для строк, например, видишь?

Хм, а для строчек-то зачем? Просто интересно..


 
Суслик ©   (2004-09-08 14:56) [432]


> Акуличев Дмитрий   (08.09.04 14:53) [429]


> Там где они документированы, там же и написано зачем.

Ну знаешь ли, читать и я могу.

Почему бы не документировать (тем более, что она есть и хорошо работает) такую функцию: addref.

С такой докой:

AddRef should be used only in situations where a variable copied by other means than by ":=".

Поясню, почему меня этот вопрос уже второй год занимает. Понимаешь, я чуствую, что здесь есть какая-то глубинная (не обозначенная впрочем во всем текущем топике :))) причина. Очень хотелось бы услышать, тех кто об этом тоже задумывался.


 
Игорь Шевченко ©   (2004-09-08 14:57) [433]

Суслик ©   (08.09.04 14:46) [427]


>  Нажми ф1.


Нажал. "The word you have typed is not in the index".


 
Суслик ©   (2004-09-08 15:01) [434]


> Danilka ©   (08.09.04 14:55) [431]

сначала пример
type
  PRec = ^TRec;
  TRec = record
     s: string;
  end;
var
  p: PRec;
begin
  GetMem(p, SizeOf(TRec));
  p^.s := stringof("0", 10);
  Finalize(p^); // без этого будет учечка - s не освободится.
  FreeMem(p);
end;

зачем это нужно?
Представь, что реализуешь например свой датасет. Понятно, что при серьезной разработке ни вариантами, ни строками пользоваться нельзя - надо их эмулировать более оптимально. НО для реализации чего-то внесколькократно быстрого чем tclientdataset вполно можно пользоваться и AnsiString. Для того, чтобы быстро очищать боласти памяти нужно исползовать finalize.


 
Суслик ©   (2004-09-08 15:02) [435]

>>Игорь Шевченко ©   (08.09.04 14:57) [433]
Ты имеешь в виду очепатку?
Ну-ну
тогда жми f1 на строке finalize :)))))


 
Акуличев Дмитрий   (2004-09-08 15:03) [436]


> Суслик ©   (08.09.04 14:53) [430]
>
> > Акуличев Дмитрий   (08.09.04 14:48) [428]
>
>
> > Дело в том, что необходимость в Initialize/Finalize я
> вижу.
> > А вот в ручном управлении счётчиком -- нет.
>
> Уточню ответ:
> Наверное так
> "А вот в ручном управлении счётчиком интерфейсов -- нет."
> Да?

Чяво? Мы же вроде бы уже про структурированные типы говорим.


> Вот скажи с обозначенной выше точки зрения - чем для меня
> отличается скажем строка и интерфейс с точки зрения управления
> их жизнью?

Ничем. Я про это всю дорогу и толкую.

Мне не надо управлять временем жизни.
Кроме особо специальных случаев. Которые, в свою очередь, полностью покрываются приведением типов.
Зачем же это надо тебе, ты никак внятно пояснить не можешь.


 
Суслик ©   (2004-09-08 15:06) [437]


> Акуличев Дмитрий   (08.09.04 15:03) [436]

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

ЗЫ. Проше прощения - вчера чуть палец не отрезал. Поэтому сложно набирать без ошибок - а глазами ошибки в тексте я до сих пор вижу плохо.


 
Акуличев Дмитрий   (2004-09-08 15:08) [438]


> Суслик ©   (08.09.04 14:56) [432]
> Поясню, почему меня этот вопрос уже второй год занимает.
> Понимаешь, я чуствую, что здесь есть какая-то глубинная
> (не обозначенная впрочем во всем текущем топике :))) причина.
> Очень хотелось бы услышать, тех кто об этом тоже задумывался.

Причина проста: средств для инициализации/финализации нет, для них были сделаны встроенные процедуры.
Для копирования есть присваивание с приведением типов. Зачем еще вводить в язык лишние сущности?


 
Игорь Шевченко ©   (2004-09-08 15:09) [439]

Суслик ©   (08.09.04 14:56) [432]


> Представь, что реализуешь например свой датасет. Понятно,
> что при серьезной разработке ни вариантами, ни строками
> пользоваться нельзя - надо их эмулировать более оптимально.
> НО для реализации чего-то внесколькократно быстрого чем
> tclientdataset вполно можно пользоваться и AnsiString. Для
> того, чтобы быстро очищать боласти памяти нужно исползовать
> finalize.


Суслик ©   (08.09.04 15:06) [437]

датасет свой

А глупый вопрос - нафига при реализации своего dataset"а использовать такие record"ы ?


 
vuk ©   (2004-09-08 15:09) [440]

to Суслик ©   (08.09.04 14:56) [432]:
>Вот скажи с обозначенной выше точки зрения - чем для меня
>отличается скажем строка и интерфейс с точки зрения управления
>их жизнью?
Объект реализующий интерфейс управляет временем жизни сам на основании счетчика ссылок. Строка - не объект и поэтому ее временем жизни управляет RTL.



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 1.59 MB
Время: 0.127 c
4-1092748880
Vasya.ru
2004-08-17 17:21
2004.10.03
Программа через автозапуск не работает


1-1095339716
Zilog
2004-09-16 17:01
2004.10.03
...запретить обращение к управляющим элементам на форме...


1-1094652193
appendix
2004-09-08 18:03
2004.10.03
Зависание при запуске


3-1094197200
Bless
2004-09-03 11:40
2004.10.03
fast_forward vc forward_only


14-1084251025
Vlad Oshin
2004-05-11 08:50
2004.10.03
с анекдот ру