Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.045 c
14-1104576205
Alex_S
2005-01-01 13:43
2005.01.23
Чудеса с Лексиконом. (История прошлого века)


14-1104700309
Vaitek
2005-01-03 00:11
2005.01.23
Это у всех Опера глючит или только у меня?


11-1087303348
paulgl
2004-06-15 16:42
2005.01.23
Обработка событий компонента


1-1104831952
Федюлин Григорий
2005-01-04 12:45
2005.01.23
Парсинг строки


1-1105533171
Express
2005-01-12 15:32
2005.01.23
Canvas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский