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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение типа аргумента 
:(
    Опции темы
Syle
Дата 8.5.2007, 22:59 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.4.2007
Где: Елисаветград

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



Подскажите пожалуйста, можно ли определить тип аргумента, который передаеться функции

Дело в том что, в моем классе надо реализовать много функций, полностью идентичных, но работающих с разными типами
PM MAIL ICQ   Вверх
Yanis
Дата 8.5.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 6
Всего: 111



Цитата(Syle @  8.5.2007,  23:59 Найти цитируемый пост)
Дело в том что, в моем классе надо реализовать много функций, полностью идентичных, но работающих с разными типами

Ну так делай много функций с разными типа аргумента. Вот тебе и будет «много разных функций». Незабудь пометить их директивой overload.

Наверняка вскоре здесь найдутся читальщики мыслей…


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
iddqd
Дата 9.5.2007, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Yanis, ему надо черную магию... не
Цитата(Yanis @  8.5.2007,  23:19 Найти цитируемый пост)
 «много разных функций»

, а
Цитата(Syle @  8.5.2007,  22:59 Найти цитируемый пост)
много функций, полностью идентичных


Но открыв чакры и прочитав мысли, также прочитав пост Yanis становится примерно понятно, что тебе надо overload.


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


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 16.4.2007
Где: Елисаветград

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



Да наверно. Даже в древних записях Вуду, ничего об этом не говориться. Остаеться колдовать перезагрузку.

PS. Я спрашивал о возможности реализации данной структуры кода:

Код

function Voodoo(var Bone): integer;
begin
  if (Bone <являеться_типом> TDogSkeleton) then ....
  if (Bone <являеться_типом> TRatSkeleton) then ....
end;



Это сообщение отредактировал(а) Syle - 9.5.2007, 01:37
PM MAIL ICQ   Вверх
Snowy
Дата 9.5.2007, 02:12 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



<являеться_типом> в Delphi зовётся is
Код

  if (Bone is TDogSkeleton) then ....

PM MAIL   Вверх
skyboy
Дата 9.5.2007, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(Snowy @  9.5.2007,  01:12 Найти цитируемый пост)
<являеться_типом> в Delphi зовётся is

...в случае, если применяется к объектам какого-нибудь класса...
PM MAIL   Вверх
Yanis
Дата 9.5.2007, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 6
Всего: 111



Цитата(Syle @  9.5.2007,  02:34 Найти цитируемый пост)
Остаеться колдовать перезагрузку.

Главное, что бы самому не перезагрузиться smile
Вот кстати, что можно ещё наколдовать:
Код
type
  TC = class
    procedure M1(a: array of const);
    procedure M2(a: Variant);
  end;

procedure TC.M1(a: array of const);
var
  h, l, i: Integer;
begin
  l := Low(a);
  h := High(a);
  for i := l to h do
    begin
      case a[i].VType of
        varInteger: { processing Integer } ;
        varDouble: { processing Double } ;
      end;
    end;
end;

procedure TC.M2(a: Variant);
begin
  case VarType(a) of
    varInteger: ShowMessage('Integer');
    varDouble: ShowMessage('Double');
    varString: ShowMessage('String');
  end;
end;

Выбирай любой метод, который нравится больше.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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