Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Операторы As, Is 
:(
    Опции темы
Vit
Дата 30.9.2002, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



При применении As и Is можно ли как-нибудь использовать вместо прявого указания на класс переменную, т.е. что-то типа

a:=TForm;
...
if b is a then (b as a).caption:='something';


Если можно, то как объявить переменную а?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Dapo
Дата 30.9.2002, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Попробуй ClassType
PM MAIL   Вверх
Vit
Дата 30.9.2002, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Dapo @ 29.9.2002, 21:15)
Попробуй ClassType

ClassType - это строка, это мне ничего не даст...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 30.9.2002, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Vit! Как же ты Application.CreateForm не посмотрел!  :)

type
TFormClass=class of TForm;

var
Form1:TForm1;
FormClass:TFormClass;
...
...
FormClass:=TForm1;
Form1:=FormClass.Create(nil); //cоздаем экземпляр TForm1.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Dapo
Дата 30.9.2002, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Цитата(Vit @ 30.9.2002, 07:32)
ClassType - это строка, это мне ничего не даст...

Строка? а как на счет вот такого кода:

var a,b:TMyObject;
........
a:=TMyClient.create(..);
b:=TMyClient.create(..);

if (a is b.СlassType) then ....???

Поясните, плиз.
PM MAIL   Вверх
Vit
Дата 30.9.2002, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Fantasist @ 29.9.2002, 23:00)
Vit! Как же ты Application.CreateForm не посмотрел!  :)

type
TFormClass=class of TForm;

Спасибо, я что-то торможу! Блин, ведь знал, но как-то в голову не пришло. Спасибо ещё раз


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 30.9.2002, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Dapo @ 29.9.2002, 23:14)
Строка? а как на счет вот такого кода:

var a,b:TMyObject;
........
a:=TMyClient.create(..);
b:=TMyClient.create(..);

if (a is b.СlassType) then ....???

А что на счёт такого кода? - этот код не будет компиллироваться...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Dapo
Дата 30.9.2002, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Цитата(Vit @ 30.9.2002, 08:32)
Цитата(Dapo @ 29.9.2002, 23:14)
Строка? а как на счет вот такого кода:

var a,b:TMyObject;
........
a:=TMyClient.create(..);
b:=TMyClient.create(..);

if (a is b.СlassType) then ....???

А что на счёт такого кода? - этот код не будет компиллироваться...

Вместо TMyClient - TMyObject.
PM MAIL   Вверх
Vit
Дата 30.9.2002, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Dapo @ 29.9.2002, 23:39)
if (a is b.СlassType) then ....

Эта строка не будет компиллироваться вне зависимости от того как определены типы a и b, просто оператор is требует класса, а не строки.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Dapo
Дата 30.9.2002, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 18.4.2002

Репутация: нет
Всего: 1



Цитата(Vit @ 30.9.2002, 08:45)
Цитата(Dapo @ 29.9.2002, 23:39)
if (a is b.СlassType) then ....

Эта строка не будет компиллироваться вне зависимости от того как определены типы a и b, просто оператор is требует класса, а не строки.

Vit, а ты попробуй. Не знаю на чем пишешь, но на Дельфи ClassType возвращает TClass. И я привел пример работающего кода.

procedure TMainForm.Button2Click(Sender: TObject);
var a:TObject;
   b:TClient;
begin
a:=TClient.Create('','','','','','','','','127.0.0.1',true,$0000,Now,1,nil);
b:=TClient.Create('','','','','','','','','127.0.0.1',true,$0000,Now,1,nil);
if (a is b.ClassType) then
showmessage('Client');
a.Free;
b.Free;
end;

Вот это работает.
PM MAIL   Вверх
Vit
Дата 30.9.2002, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Опс! Сорри, я погорячился, беру все слова назад... Спутал ClassType с ClassName! Всё, пора идти спать, чтоб больше не писать ерунды...

Спасибо всем.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Le Taon
Дата 30.9.2002, 20:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











var a: TClass;
    obj: TObject;

...
a := TForm;
if obj.InheritsFrom(a) then ...
  Вверх
Vit
Дата 30.9.2002, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Guest @ 30.9.2002, 04:27)
a := TForm;
if obj.InheritsFrom(a) then ...

Класс, спасибо большое!


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1373 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.