Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.01.2010, 09:29
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
Вопрос Связанные по неволе юниты.

Привет всем. Помогите решить проблему. Я создал два отдельных юнита, но так получилось, что во втором вызывается первый, а в первом второй. И это вызывает ошибку. Как быть?
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием
  #2  
Старый 16.01.2010, 10:04
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Поместите вызовы после implementation.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 16.01.2010, 15:40
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от Страдалецъ
Поместите вызовы после implementation.
Хорошое предложение! Но сделать это невозможно!

На это несколько причин. Я приведу их описание и куски кода для наглядности.

Итак, в модуле GLCustomShader.pas есть класс TGLFragmentProgram, который нужен мне для создания поля другом юните и в другом классе:
Код:
//юнит GLShaderMaterialAndLighting
TGLMaterial = class ()
      private
         FFragmentProgram: TGLFragmentProgram; 
...
Описание класса TGLMaterial находится ДО раздела implementation т.к. класс TGLMaterial должен быть использован как тип в 3-ем юните. Если я помещу объявление TGLMaterial за implementation, то он будет только для этого модуля.

Что теперь делать?
__________________
Делаем'c разные игры. Искать на glscene.ru

Последний раз редактировалось DungeonLords, 16.01.2010 в 15:43.
Ответить с цитированием
  #4  
Старый 16.01.2010, 18:30
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Пересмотри логику юнтов, скорее всего ты слишком мудришь)
В крайнем случае, вынеси в третий модуль, все что объединяет эти два модуля.
Ответить с цитированием
  #5  
Старый 16.01.2010, 18:59
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вижу несколько решений.
1. Поместить описания связаных классов в одном модуле.
2. Как я понял в модуле GLCustomShader вызов TGLMaterial происходит после implementation. Если так, то можно в GLCustomShader вызов делать после implementation, а в другом модуле до implementation тоже должно прокатить.
Есть еще один способ, но я его хочу проверить т.к. сам не пробовал.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:58.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025