Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 01:40   #1
badmfck
Новичок
Джуниор
 
Регистрация: 24.05.2010
Сообщений: 6
По умолчанию передача типов из класса в класс

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

выглядит примерно так:
Код:
unit main;
uses myClass;
...
type
myType=Record
some:String[20];
end;
...

var
myArr:Array of myType;

myClass.create();
myClass.sort(myArr);
а это myClass:

Код:
unit myClass
myClass.sort(var myArr:Array of ????????);
вот как мне тут указать тип myType из unit main?

Надеюсь ктонибудь сможет это всё понять %)
badmfck вне форума Ответить с цитированием
Старый 24.05.2010, 01:58   #2
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Нифига не понял. Переменная myArr объявлена как массив записей. А где количество элементов в этом массиве? Если я не ошибаюсь, должно быть
к примеру так:
var
myArr: Array [1..10] of myType;

Тип массива myArr можно задать так: Tmas = array [1..10] of myType;
Тогда в методе myClass.sort(var myArr: Tmas);

Если я конечно правильно понял
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 24.05.2010, 02:34   #3
badmfck
Новичок
Джуниор
 
Регистрация: 24.05.2010
Сообщений: 6
По умолчанию

ну массив динамический... я описал не весь код, а некоторую абстрактную часть. Поэтому синтаксис может хромать.

Если я пишу в myClass var some:Array of MyType то выдаёт ошибку: Undeclared identifer

Тоесть, по логике я долже писать нечто var some:Array of MY_PARENT_CLASS.myType;
badmfck вне форума Ответить с цитированием
Старый 24.05.2010, 07:22   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от badmfck Посмотреть сообщение
вот как мне тут указать тип myType из unit main?
А зачем? Пусть будет там где описан класс MyClass.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 24.05.2010, 09:32   #5
badmfck
Новичок
Джуниор
 
Регистрация: 24.05.2010
Сообщений: 6
По умолчанию

ну как это зачем, мне нужно.
Работы с этим типов будет целый воз, что-то его сохраняет и не только его, что то редактирует. Подразумевается куча классов.
вопрос звучит так: есть способ передать тип из unit в unit?
или сделать глобальный тип для всех unit`ов
Ну это же тривиальная задача должна быть
badmfck вне форума Ответить с цитированием
Старый 24.05.2010, 09:57   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

значит объявите запись эту внутри myClass
в Делфи нет практики что один модуль строго под один класс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.05.2010, 11:46   #7
badmfck
Новичок
Джуниор
 
Регистрация: 24.05.2010
Сообщений: 6
По умолчанию

ну хорошо. Если мне эта запись понадобится в каком либо ещё модуле, кроме того где она объявлена, что делать?
badmfck вне форума Ответить с цитированием
Старый 24.05.2010, 11:51   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

uses main
посмотрите немного кодофонд Делфи, посмотрите как иерархии классов и прочего устроенны=)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.05.2010, 12:12   #9
badmfck
Новичок
Джуниор
 
Регистрация: 24.05.2010
Сообщений: 6
По умолчанию

Уже всё пересмотрел
не могу делать uses main, так как в main стоит uses myclass.
badmfck вне форума Ответить с цитированием
Старый 24.05.2010, 12:21   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
unit myClass

interface

type
myType=Record
some:String[20];
end;

myClass=class
 public
  procedure Sort(var myArr:Array of myType);

implemination//это слово по памяти написал неверно скорее всего

procedure myClass.sort;
begin

end;
и все.
Код:
unit main;
uses myClass;

...

var
myArr:Array of myType;
MyCl:MyClass;

MyCl:=myClass.create();//правильно обьект создавать то стоит.
myCl.sort(myArr);
кстати в Делфи не просто так принятно T при обозначении типов ставить.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение оператора умножения для класса. Умножение числа на класс. capta1n Общие вопросы C/C++ 2 06.03.2010 16:50
Перенос данных из класса в класс zexak Общие вопросы по Java, Java SE, Kotlin 2 27.02.2010 20:03
Передача ссылки в функцию класса на данный класс Impuls1989 Общие вопросы C/C++ 17 09.01.2010 17:21
Передача имени класса как параметра Квэнди Общие вопросы Delphi 14 06.04.2009 20:09
Передача метода класса в качестве параметра в другой метод Dmytry87 Общие вопросы C/C++ 0 12.11.2008 15:28