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

Вниз

как определить существует ли объект   Найти похожие ветки 

 
malyar   (2007-08-18 14:44) [0]

всем привет
народ подскажите почему приведённый ниже код
при любом числовом значении переменной data сообщает
что объект найден даже если не создано ни одной коопии
TSimpleClient ?

type
 TSimpleClient = class(TObject)
 ...
 ....
 ....  
end;

//----------------------------------------------

var
dest:integer;
data:string;
ts:tsimpleclient;
begin

dest:=strtoint(data);
ts:= tsimpleclient(dest);
if assigned (ts) then
 memo1.Lines.Insert(0,"naiden")
else
 memo1.Lines.Insert(0,"ne naiden");


 
Leonid Troyanovsky ©   (2007-08-18 14:55) [1]


> malyar   (18.08.07 14:44)  

> при любом числовом значении переменной data сообщает
> что объект найден даже если не создано ни одной коопии

Дык, назначай 0 и будет не найден.

--
Regards, LVT.


 
Юрий Зотов ©   (2007-08-18 19:02) [2]

Боже...


 
Dimaxx ©   (2007-08-18 19:29) [3]


> var
> dest:integer;
> data:string;
> ts:tsimpleclient;
> begin
>
> dest:=strtoint(data);
> ts:= tsimpleclient(dest);
> if assigned (ts) then
>  memo1.Lines.Insert(0,"naiden")
> else
>  memo1.Lines.Insert(0,"ne naiden");

Шо за бред? Мож кто объяснит что делает этот код? Нифига не понял...


 
DrPass ©   (2007-08-18 20:17) [4]


> Шо за бред? Мож кто объяснит что делает этот код? Нифига
> не понял...

Ничего особенного. Афтар просто пытается постичь алгоритм работы функции Assigned


 
Virgo_Style ©   (2007-08-18 22:05) [5]


> ts:= tsimpleclient(dest);


*включая телепатор* ты думаешь, что tsimpleclient(1) - это то же самое, что simpleclient1 ? Не угадал...


 
Германн ©   (2007-08-19 01:01) [6]


> Virgo_Style ©   (18.08.07 22:05) [5]

"Телепатор", да ещё в таких климатических условиях, как сейчас в Москве, лучше не включать! :-)

Ведь в вопросе звучит
> даже если не создано ни одной коопии
> TSimpleClient

Имхо, DrPass ©   (18.08.07 20:17) [4] скорее всего прав.
Но внутренне согласен с Юрием Зотовым. (Хотя "внешне", в подобных вопросах, стараюсь придерживаться принципов Михаила Самуэлевича :).


 
Плохиш ©   (2007-08-19 01:02) [7]


> Юрий Зотов ©   (18.08.07 19:02) [2]
> Боже...

Так вот почему в мире столько проблем...


 
Virgo_Style ©   (2007-08-19 10:53) [8]

Германн ©   (19.08.07 1:01) [6]
Я сейчас не в Москве... хотя климат примерно тот же)

Сдается мне, автор хочет именно обращаться к simpleclient"ам по имени или индексу... А то придется предположить, что он осознанно приводит integer к tsimpleclient... я еще не до такой степени разуверился в человечестве :-D


 
Anatoly Podgoretsky ©   (2007-08-19 12:49) [9]

Ты оптимист


 
Virgo_Style ©   (2007-08-19 13:10) [10]

Anatoly Podgoretsky ©   (19.08.07 12:49) [9]

так мне и годиков поменьше будет


 
malyar   (2007-08-19 18:01) [11]

получается что при использовании опасного приведения типов от
функции assigned толку мало так как
if assigned (Tmy(12345)) then всегда верно

как тогда можно узнать был ли создан объект или нет если для хранения
указателя используется переменная типа интегер

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


 
Германн ©   (2007-08-19 18:05) [12]

Мой телепатор работает правильно :-)


 
MetalFan ©   (2007-08-19 18:05) [13]


> получается что при использовании опасного приведения типов
> от
> функции assigned толку мало так как
> if assigned (Tmy(12345)) then всегда верно

а что ты хотел от этой функции? она лишь проверяет, присвоено ли указателю значение отличное от nil или нет.
с небольшой эффективностью можно попробовать применить функции из разряда IsBad(Read/Write/Code/String)Ptr


 
DrPass ©   (2007-08-19 18:11) [14]


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

Куда разумнее хранить объекты в массиве, и передавать клиенту индексы этих объектов.


 
malyar   (2007-08-19 18:58) [15]

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


 
Leonid Troyanovsky ©   (2007-08-19 19:07) [16]


> malyar   (19.08.07 18:58) [15]

RTFM.

--
Regards, LVT.


 
Юрий Зотов ©   (2007-08-19 19:18) [17]

> malyar   (19.08.07 18:01) [11]

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

А если в общем, то см. TObjectList.


 
DrPass ©   (2007-08-19 20:09) [18]


> Юрий Зотов ©   (19.08.07 19:18) [17]

Насколько я понимаю, клиент у него использует указатель исключительно как хендл. А вся эта катавасия с Assigned затеяна для того, чтобы сервер мог проверять валидность передаваемых ему хендлов


 
DrPass ©   (2007-08-19 20:12) [19]


> malyar   (19.08.07 18:58) [15]


> если применить массив без удаления не нужных элементов то
> нумерация менятся не будет и индексы будут верны

А фантазия программисту зачем дадена? Устанавливай ненужные элементы в nil, а не удаляй. При создании новых объектов переиспользуй. И расти без необходимости не будет, и перенумерация не потребуется


 
Leonid Troyanovsky ©   (2007-08-19 20:33) [20]


> DrPass ©   (19.08.07 20:09) [18]

> Насколько я понимаю, клиент у него использует указатель
> исключительно как хендл. А вся эта катавасия с Assigned
> затеяна для того, чтобы сервер мог проверять валидность
> передаваемых ему хендлов

Фантазер.

--
Regards, LVT.



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

Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.049 c
2-1187353435
-=Le][=-
2007-08-17 16:23
2007.09.09
FastReport


15-1186659367
palva
2007-08-09 15:36
2007.09.09
Еще одна фотка дня


3-1179142779
DelphiLexx
2007-05-14 15:39
2007.09.09
DBGridEh проблемы перехода из режима редактирования


2-1186652202
shtam
2007-08-09 13:36
2007.09.09
chm


2-1187263881
gentos
2007-08-16 15:31
2007.09.09
закрытие fsMDIChild формы





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