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

Вниз

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

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

Наверх





Память: 0.5 MB
Время: 0.043 c
15-1182203401
SerJaNT
2007-06-19 01:50
2007.07.22
Сеть...


2-1182855821
Vazhik
2007-06-26 15:03
2007.07.22
Консольное приложение


15-1182513374
de.
2007-06-22 15:56
2007.07.22
map


15-1182425919
Bless
2007-06-21 15:38
2007.07.22
Примеры распределенных приложений


2-1182751874
Washington
2007-06-25 10:11
2007.07.22
Форма в центре экрана





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