Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.59 MB
Время: 0.169 c
14-1095242021
xman
2004-09-15 13:53
2004.10.03
Имя провайдера


8-1089106744
REA
2004-07-06 13:39
2004.10.03
Big Bitmap


3-1093854995
Maxim____
2004-08-30 12:36
2004.10.03
Что такое ISAM и как оно работает?


6-1090744138
Asail
2004-07-25 12:28
2004.10.03
Опрос сети для поиска хостов...


1-1095187186
Destiny
2004-09-14 22:39
2004.10.03
Как выводить огромную картинку на экран.





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