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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание класса унаследованного от двух других 
:(
    Опции темы
Delphist
Дата 4.5.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Есть ли в Delphi2006 возможность не используя интерфейсы создать класс наследуемый от двух других.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Snowy
Дата 4.5.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



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


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Snowy @  4.5.2007,  14:57 Найти цитируемый пост)
Нет. 

У тебя на delphilab.ru не работает ссылка Исходные коды примеров: md7code.zip 2Mb
Скинь, пожалуйста, md7code.zip на [email protected]

Это сообщение отредактировал(а) Delphist - 4.5.2007, 14:07


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Snowy
Дата 4.5.2007, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Угу. Там просто был линк на них на сайте автора.
Там теперь их нет. Выложил у себя. fixed.
Спасибо, конечно, только это оффтоп  smile 
Для этого PM есть...
(нуно будет что-нить придумать для фидбэков...)
PM MAIL   Вверх
Alexeis
Дата 5.5.2007, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



В 2007 ввели возможность создания классов Helper ов если объявить 2 класса как хелперы к одному, а потом от этого класса унаследовать новый класс, в котором уже можно будет переопределять методы обоих хелперов, то получится что-то вроде множественного наследования.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 5.5.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Точно. Забыл про них.
Правда это не совсем то, но может подойдёт.
Только поправочка - хелперы появились ещё в Delphi 2005.
А значит и в 2006 они тоже есть.
PM MAIL   Вверх
Delphist
Дата 7.5.2007, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Alexeis @  5.5.2007,  14:47 Найти цитируемый пост)
В 2007 ввели возможность создания классов Helper ов если объявить 2 класса как хелперы к одному, а потом от этого класса унаследовать новый класс, в котором уже можно будет переопределять методы обоих хелперов, то получится что-то вроде множественного наследования. 

А нельзя поподробнее на эту тему, желательно с примерчиком. 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alexeis
Дата 7.5.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



убиться можно от их ограничений!
 smile 

Короче максимум чего можно сделать это 2х наследников (один реальный другой хелпер)
Хелпер не может объявлять новых данных, только методы причем не виртуальные!

вот чего вышло

Код

  TBaseclass1 = class(TObject)
  protected
    i : integer;
    j : integer;
    k : integer;
  public
    procedure SetI(aI : Integer); virtual;
  end;

  Tclass1 = class Helper for TBaseclass1
  public
     procedure SetJ(aJ : Integer);
  end;

  TInh = class (TBaseclass1)
     procedure SetIJ(ai, aj : integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TBaseclass1.SetI(aI : Integer);
begin
  i := ai;
  ShowMessage(IntToStr(i));
end;

procedure Tclass1.SetJ(aJ : Integer);
begin
  j := aj;
  ShowMessage(IntToStr(j));
end;

procedure TInh.SetIJ(ai, aj : integer);
Begin
  SetI(ai);
  Setj(aj);
End;

procedure TForm1.Button1Click(Sender: TObject);
var
  mem : TMemoryStream;
  t   : Tbitmap;
  b   : TInh;
begin
  b := TInh.Create;
  b.SetIJ(4, 6);



Мдя такой двойное наследование трудно назвать полезным. smile 


Это сообщение отредактировал(а) Alexeis - 7.5.2007, 12:04


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Delphist
  Дата 7.5.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Alexeis @  7.5.2007,  13:03 Найти цитируемый пост)
  
Код

...
TInh = class (TBaseclass1)
procedure SetIJ(ai, aj : integer);
end;
...


Ты случайно здесь не перепутал, может быть, TInh = class (Tclass1 ), а то получается, чтопрямого наследника от TBaseclass1 создать не удастся



--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Alexeis
Дата 7.5.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Да не все верно. TInh = class (Tclass1) - такая запись запрещена 
 Tclass1 = class Helper for TBaseclass1 - это вообще на самом деле и не класс вовсе. Просто контейнер процедур.
 
Цитата(Delphist @  7.5.2007,  12:39 Найти цитируемый пост)
то получается, чтопрямого наследника от TBaseclass1 создать не удастся

  Да если где-то объявлен helper то все труба они все будут иметь обоих наследников. Но это ничуть не мешает. Ведь код процедур не попадает экзешник дважды, а новых полей данных объявлять в хелперах нельзя.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Delphist
Дата 7.5.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(Alexeis @  7.5.2007,  13:50 Найти цитируемый пост)
  Да если где-то объявлен helper то все труба они все будут иметь обоих наследников.

Ну и в чем прикол от этих helper'ов я мог бы сразу создать наследника от TBaseClass1 с методом SetIJ


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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