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

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

Как идентифицировать объект по указателю на него ? [D6]


Страницы:   1 2

msguns ©   (2005-07-22 15:20:00) 

На простом примере :
Есть процедура, которой передается указатель, куда надо положить некое число. Она должна определить, что "скрывается" под этим указателем. Если, например, это обект винкотрольный, то преобразовать число в строку и положить в св-во Text или Caption (в зависимомти от класса объекта), если строка - то просто положить туда. Если же Integer, то просто записать по этому адресу само число и т.д.

Благодарю всех участников.


evvcom   (2005-07-22 16:24:00) [21]

Посмотри как работают функции New/Dispose с TypInfo.


Джо   (2005-07-22 16:21:00) [22]


> [7] msguns ©   (22.07.05 16:04)
> Меня интересует грамотно.
> И красиво ;)

Для этого лучше всего грамотно подойти к проектированию алгоритма. Тогда и не будет нужды в хаках.


Digitman   (2005-07-22 16:20:00) [23]


> msguns ©   (22.07.05 16:04) [7]


тогда грамотно же и излагай суть вопроса.


> передается указатель


типизированный ? упоминай тип.
нетипизированный ? см. [1]


msguns   (2005-07-22 16:04:00) [24]

>Digitman ©   (22.07.05 15:53) [6]
>а тебя хак-методы интересуют ?)

Меня интересует грамотно.
И красиво ;)


Digitman   (2005-07-22 15:53:00) [25]


> msguns ©   (22.07.05 15:49) [5]


а тебя хак-методы интересуют ?)


msguns   (2005-07-22 15:49:00) [26]

>Digitman ©   (22.07.05 15:35) [2]

Ну, до метода научного тыка я бы и сам догадался ;))


Digitman   (2005-07-22 15:47:00) [27]


> Lamer@fools.ua ©   (22.07.05 15:44) [3]


теже фаберже, но вид сбоку


Lamer@fools.ua   (2005-07-22 15:44:00) [28]

> Как идентифицировать объект по указателю на него ?

Либо пользоваться Variant'ами либо использовать технологии с поддержкой определения типа в ран-тайм (.NET, Java).


Digitman   (2005-07-22 15:35:00) [29]

procedure (ptr: Pointer; Number: Integer);
begin
 try
   if TObject(ptr) is TSomeControl then
     begin
       TSomeControl(ptr).Text := IntToStr(Number);
       Exit;
     end;
 except
 end;

 try
   if TObject(ptr) is TSomeOtherControl then
     begin
       TSomeOtherControl(ptr).Text := IntToStr(Number);
       Exit;
     end;
 except
 end;

 try
   if строка then
     просто положить туда (черт-те что подразумевается под "строка" и "просто положить туда")
 except
 end;

 PInteger(ptr)^ := Number;
end;


Джо   (2005-07-22 15:21:00) [30]

В общем случае, имхо, никак.


Страницы:   1 2

Наверх

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