2015-05-01 2 views
-1

я создать первый блок с основными определениями классов какРешать блок перекрестная ссылка вопрос

unit_classtype; 
type 
TMyClass = class(..) 
    ..... 
end; 

end. 

Во втором блоке я храню много вспомогательных функций для первого блока

unit_classtype_helper; 

uses unit_classtype; 

    procedure WriteMyClasstoStringlist (aStringlist : TStringlist; aClass : TMyClass); 


implementation 

    procedure WriteMyClasstoStringlist (aStringlist : TStringlist; aClass : TMyClass); 
begin 
    aStringlist.add ('info on my Class', MyClass.Data); 
    .... 
end; 

Теперь я хочу для создания функции MycLass.savetoFile и использования кода из WriteMyClasstoStringlist, но я не могу включить helpunit в блок определения класса из-за перекрестной ссылки.

Shifting код не вариант, мне нужно немного другое решение

+0

Написание качественного поддерживаемого кода *** принципиально *** о размещении кода в «правильном» месте - _where its which_. Но вы говорите, что это не вариант? Что «лучше знает» о том, что происходит внутри «TMyClass» и что должно быть записано в список строк в ** best **, представляет экземпляр? Вы можете выбрать любую из следующих функций: «TMyClass», «TMyClass» или «TMyClass». ..... Итак, хотя вы утверждаете, что переключение кода не является опцией, единственным *** правильным *** является добавление 'public procedure WriteToStrings (AStrings: TStrings);' to 'TMyClass'. –

ответ

3

Я Quess сейчас вы Тринг, чтобы включить оба устройства в секции интерфейса, но вам нужно только unit_classtype_helper в осуществлении unit_classtype так организуйте свой код следующим образом:

unit unit_classtype; 

interface 

type 
    TMyClass = class(..) 
    ..... 
    end; 

implementation 

uses 
    unit_classtype_helper; 
... 
end. 
Смежные вопросы