Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

проблема с Объявлением Классов   Найти похожие ветки 

 
Maxim____M   (2005-01-06 09:51) [0]



-----------------------------------------------------------------
type tMyClassList = class (tlist)

procedure Put(Index: Integer; Item: tmyclass;
       function Get(Index: Integer): tmyclass
.....
end;
-----------------------------------------------------------------
type tMyClass = class(tpersistent)

parent:tMyClassList
.....

end;
-----------------------------------------------------------------


ругань по поводу того что в первом случае не известнет класс tmyclass,
если поменять местами, то tMyClassList  будет неизвестнен.
Что делать? Плодить юниты?
Я их итак столько расплодил что сам не помню где что.
Как же быть?


 
begin...end ©   (2005-01-06 09:54) [1]

> Maxim____M   (06.01.05 09:51)

> Я их итак столько расплодил что сам не помню где что.

Ну а мы тем более.

> Как же быть?

TMyClassList предназначен для хранения объектов? Тогда есть уже стандартный класс - TObjectList. См. также: TClassList.


 
MBo ©   (2005-01-06 10:06) [2]

type tMyClass = class;
type tMyClassList = class (tlist)
procedure Put(Index: Integer; Item: tmyclass;
      function Get(Index: Integer): tmyclass
.....
end;
-----------------------------------------------------------------
type tMyClass = class(tpersistent)

parent:tMyClassList
.....

end;


 
Maxim____M   (2005-01-06 10:15) [3]

MBo ©   (06.01.05 10:06) [2]

спасибо за помощь,
выглядет прекрасно и должно бы работать,
но опять ругань,
[Error] unit.pas(10): Type "tMyClass" is not yet completely defined


 
Fay ©   (2005-01-06 10:17) [4]

8)


 
aus   (2005-01-06 10:20) [5]

Чтобы меньше путаться, называй классы и модули (да и все остальное) осмысленными именами, а не Unit.pas, например.


 
MBo ©   (2005-01-06 10:21) [6]

все должно быть в одном модуле


 
Maxim____M   (2005-01-06 10:43) [7]

MBo ©   (06.01.05 10:21) [6]

у меня всё это в одном модуле, если вы имеете в виду unit,
но проблема осталась

aus   (06.01.05 10:20) [5]

естественно всё названо своими именами, и модули, и классы,
и класс не tmyclass называется на намного сложнее,
но для ясности картины я привожу тут условные имена.


 
MBo ©   (2005-01-06 10:46) [8]

>но проблема осталась
ошибка в 17 строке


 
Fay ©   (2005-01-06 10:47) [9]

8))


 
Maxim____M   (2005-01-06 11:23) [10]


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type tform1 = class;
type tforms=class(tlist)
 frms:array of tform1;
end;

type
 TForm1 = class(TForm)
 
 private
   parent:tforms;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

end.



Вот вам весь код. Друой программы, конечно.
Покажите мне 17-ю строку.
Я её в упор не вижу, я вижу всё то же

[Error] unit.pas(9): Type "tform1" is not yet completely defined

Мне кажется что я делаю ровно то, что мне сказли во втором посте.


 
MBo ©   (2005-01-06 11:31) [11]

лишние type убери, оставь только одно, опережающее объявление должно разрешаться в этом же type-блоке.

и название parent измени на что-нибудь другое, иначе позже схлопочешь геморрой


 
Maxim____M   (2005-01-06 12:01) [12]

и так пробовал и сяк ничто не помогает,
потратил кучу времени,

а Дельфя только и делает, что посылает меня грубо,
наверно мне просто пришло всемя грубо послать её
и перейти на что-то другое, благо что проект ещё не гигантстких размеров.

всем спасибо за внимание и извините за беспокойтсво.


 
Fay ©   (2005-01-06 12:07) [13]

2 Maxim____M   (06.01.05 12:01) [12]
Дело не в Delphi. Отложите - попробуйте вечером.
Вечером не такое сильное влияние космисеских лучей.


 
Anatoly Podgoretsky ©   (2005-01-06 14:31) [14]

Maxim____M   (06.01.05 12:01) [12]
Теперь приведи исправленый код или мы сами его должны в голове представить?


 
KSergey ©   (2005-01-06 14:51) [15]

> [14] Anatoly Podgoretsky ©   (06.01.05 14:31)

Фигня.
Он ушел на другой форум. Страшно подумать на какой ;)

PS
Как говорит у нас один коллега после неудачного удара на бильярде "Ну кий этот несколько кривоват, что поделаешь..."


 
Maxim____M   (2005-01-06 17:58) [16]

Anatoly Podgoretsky ©   (06.01.05 14:31) [14]
я привёл код в десятом посте.
после долгих мучений мне так и не удалось его исправить.
я не понял что имел ввиду MBo.

кривоваты  у  меня руки, видимо, а не кий.

Господа! Вы можете продолжать смеяться, над моей элементарной ошибкой, как это делает Fay, можете даже отправить меня в орешник, наверно так будет ещё веселей.
Почему так сложно подсказать,
КУДА НАДО ВСТАВИТЬ ЭТО ПРЕДОБЪЯВЛЕНИЕ?


 
begin...end ©   (2005-01-06 18:07) [17]

> [16] Maxim____M   (06.01.05 17:58)

А на мой вопрос из [1] Вы не хотите ответить? Может быть, не стоит мучиться, а вместо этого лучше воспользоваться готовым решением?

Относительно проблемы кода в [10]: оставьте только одно слово type, самое первое. И всё.

Посмотрите внимательно - Вы объявляете вначале класс TForm1 как просто class (после первого type), а потом  (после третьего type) уточняете это объявление: TForm1 = class(TForm). Так вот: такое опережающее описание можно делать только при условии, что эти два объявления (предварительное и "уточняющее") находятся в одном и том же разделе type.

Да и зачем Вам именно опережающее описание?


 
begin...end ©   (2005-01-06 18:19) [18]

Поясню то, что я сказал в [17].

Вот вариант с опережающим описанием:

type
 TForm1 = class;

 TForms = class(TList)
   frms: array of TForm1
 end;

 TForm1 = class(TForm)
   private
     ...
   public
     ...
 end;


А вот - без опережающего описания:

type
 TForm1 = class(TForm)
   private
     ...
   public
     ...
 end;

 TForms = class(TList)
   frms: array of TForm1
 end;


Вот и всё.


 
Гаврила ©   (2005-01-06 19:04) [19]

еще раз послушай MBO
убери лишние TYPE

в одном блоке type все пройдет с предобъявлением



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.024 c
14-1104571070
Меломан
2005-01-01 12:17
2005.01.23
Sweetbox - Shout


1-1104904307
rus9
2005-01-05 08:51
2005.01.23
Excel


1-1104762803
GanibalLector
2005-01-03 17:33
2005.01.23
ИМЯ файла...


4-1101761104
cerber1
2004-11-29 23:45
2005.01.23
И снова Drag&Drop


1-1105595475
makey22
2005-01-13 08:51
2005.01.23
Передача параметров в dll