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

Вниз

как можно корректно определить, что за указателем есть объект   Найти похожие ветки 

 
trace   (2007-06-26 13:56) [0]

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

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


 
фыв   (2007-06-26 14:01) [1]

никак. просто следи, чтобы указатели указывали на объекты.


 
фыв   (2007-06-26 14:03) [2]

и еще... THandle это не указатель


 
Desdechado ©   (2007-06-26 14:06) [3]

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


 
Anatoly Podgoretsky ©   (2007-06-26 15:29) [4]

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

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


 
oldman ©   (2007-06-26 15:34) [5]


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


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


 
Desdechado ©   (2007-06-26 15:57) [6]

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


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


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


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


 
StriderMan ©   (2007-06-26 16:10) [8]


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

+1 )))

Assigned?


 
Anatoly Podgoretsky ©   (2007-06-26 16:20) [9]

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

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


 
Ega23 ©   (2007-06-26 16:23) [10]


> Assigned?


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


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

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

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

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


 
Ega23 ©   (2007-06-26 16:31) [12]


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


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


 
oldman ©   (2007-06-26 16:33) [13]


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



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


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


 
evvcom ©   (2007-06-26 16:55) [14]

Про COM почитай


 
Anatoly Podgoretsky ©   (2007-06-26 16:57) [15]

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

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


 
StriderMan ©   (2007-06-26 17:31) [16]


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

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

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


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


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

Ну, ну...


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

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

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

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

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

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


 
tesseract ©   (2007-06-26 17:55) [19]


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


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


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

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


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


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


 
tesseract ©   (2007-06-26 18:09) [21]


> trace   (26.06.07 18:04) [20]


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


 
DrPass ©   (2007-06-26 20:16) [22]


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

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



Страницы: 1 вся ветка

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

Наверх




Память: 0.52 MB
Время: 0.041 c
2-1182745639
Washington
2007-06-25 08:27
2007.07.22
Выделение записей в ListBox e


2-1182924390
_Asph
2007-06-27 10:06
2007.07.22
При перерисовке мелькает label


2-1183048916
Yurish
2007-06-28 20:41
2007.07.22
TClientSocket TServerSocket таковых в Делфи 7 нет?


15-1182277121
Dreamse
2007-06-19 22:18
2007.07.22
Посоветуйте консольную утилитку для закачивания файла на FTP


1-1179386675
ewer
2007-05-17 11:24
2007.07.22
Вызов скрипта на Matlab е из программы на Delphi