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

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

как можно корректно определить, что за указателем есть объект [D7]


Страницы:   1 2

trace ©   (2007-06-26 13:56:00) 

как можно корректно определить, что за указателем есть объект, т.е. примерно что-то такое:

var
 H: THandle;
begin
 H := 565;
 if TObject(H).ClassType <> TButton then
   exit;


DrPass   (2007-06-26 20:16:00) [1]


> так вот в присланном запросе есть ссылка на объект, нужно
> проверить есть ли у нас в наличии объект такой по такой-
> то ссылке  и если нет, перенаправить запрос стороннему приложению.
>

Так в чем проблема-то? В такой зверской "архитектуре" можно практически однозначно утверждать - по адресу, который присылает приложение-клиент, в приложении-сервере никакого объекта нет.


tesseract   (2007-06-26 18:09:00) [2]


> trace   (26.06.07 18:04) [20]


А чем тогда DCOM/COM+ не нравиться ? Там весь такой маршалинг реализован - а ваш метод это ловля акулы на детоорган - ссылками на объект в памяти между приложениями швыряться....... да ещё неизвестно где находящийся.


trace   (2007-06-26 18:04:00) [3]

FreeAndNil хорошо ага, но не всегда поможет.


> Ёперный театр!!!


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


tesseract   (2007-06-26 17:55:00) [4]


> Ага семафоры с мьютексами тоже хорошая штука.


Даёшь каждому объекту по мьютексу!!!!!!!!!


trace   (2007-06-26 17:40:00) [5]

Assigned не пойдет. СОМ тут ни к чему.

>Схватил объект, попользовался - отпусти.

Ага семафоры с мьютексами тоже хорошая штука.

>У каждого процесса свое изолированное адресное пространство

Тото и оно и оно быть так должно.


Плохиш   (2007-06-26 17:39:00) [6]


> StriderMan ©   (26.06.07 17:31) [16]
> поэтому FreeAndNil и спи спокойно

Ну, ну...


StriderMan   (2007-06-26 17:31:00) [7]


> Ega23 ©   (26.06.07 16:23) [10]
> А что Assigned? Он тупо на неравенство nil проверяет...

это должен всякий помнить :)

поэтому FreeAndNilи спи спокойно


Anatoly Podgoretsky   (2007-06-26 16:57:00) [8]

> trace  (26.06.2007 16:25:11)  [11]

У каждого процесса свое изолированное адресное пространство


evvcom   (2007-06-26 16:55:00) [9]

Про COM почитай


oldman   (2007-06-26 16:33:00) [10]


> и затем управлять этим объектом через наш процесс



> причем объект должен быть уничтожен при первом же требовании
> какого либо из процессов,


Ёперный театр!!!


Ega23   (2007-06-26 16:31:00) [11]


> ну к примеру ситуация с потолка: создается динамически некий
> объект, ссылку на который могут получить другие процессы,
>  и затем управлять этим объектом через наш процесс, причем
> объект должен быть уничтожен при первом же требовании какого
> либо из процессов, как следствие в других процессах ссылка
> превращается в мусор. Тут можно вести таблицу живых объектов,
>  но лениво же :)


Фигня это полная.
Схватил объект, попользовался - отпусти.


trace   (2007-06-26 16:25:00) [12]

>THandle это не указатель
понимаю, но в данном случае используется как указатель, с таким же успехом мог бы написать LongWord или Pointer

>никак.
Благодарю, понятно...

>А зачем нужна эта бредятина?
ну к примеру ситуация с потолка: создается динамически некий объект, ссылку на который могут получить другие процессы, и затем управлять этим объектом через наш процесс, причем объект должен быть уничтожен при первом же требовании какого либо из процессов, как следствие в других процессах ссылка превращается в мусор. Тут можно вести таблицу живых объектов, но лениво же :)


Ega23   (2007-06-26 16:23:00) [13]


> Assigned?


А что Assigned? Он тупо на неравенство nil проверяет...


Anatoly Podgoretsky   (2007-06-26 16:20:00) [14]

> StriderMan  (26.06.2007 16:10:08)  [8]

Assigned мусор в золото не превращает


StriderMan   (2007-06-26 16:10:00) [15]


> Anatoly Podgoretsky ©   (26.06.07 15:29) [4]
> Или мусор, чаще

+1 )))

Assigned?


Ega23   (2007-06-26 16:07:00) [16]


> как можно корректно определить, что за указателем есть объект,
>  т.е. примерно что-то такое:


При удалении объекта приравнивай его указатель к nil.
Тогда всегда можно будет проверить if obj<>nil then ....


Desdechado   (2007-06-26 15:57:00) [17]

> Или мусор, чаще
Все равно адрес, только на свалке/бомжатнике.


oldman   (2007-06-26 15:34:00) [18]


> var
>  H: THandle;
> begin
>  H := 565;
>  if TObject(H).ClassType <> TButton then
>    exit;


А зачем нужна эта бредятина?


Anatoly Podgoretsky   (2007-06-26 15:29:00) [19]

> Desdechado  (26.06.2007 14:06:03)  [3]

Или мусор, чаще


Desdechado   (2007-06-26 14:06:00) [20]

Указатель содержит просто адрес.


Страницы:   1 2

Наверх

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