Mam dwa pakiety bpl: Core i Business, używane przez jedną aplikację. Core.bpl zawiera jednostkę User.pas z klasą TUser. TUser w Core.bpl ma tylko dwa podstawowe pola: Login i Hasło. Chcę rozwinąć klasę TUser w pakiecie Business z nowym polem: UserName. Chcę nazwać jednostkę biznesową jako jednostkę podstawową: User.pas.Przestrzenie nazw w Delphi XE2
Tworzę więc nową jednostkę User.pas w Business.bpl i umieszczam tam klasę TUser, która rozszerza TUser z Core.bpl. Teraz muszę podzielić TUser z Core.bpl i TUser z Business.bpl. I potrzebuję użyć "mocy przestrzeni nazw" tutaj :)
Przeczytałem Embarcadero doc page. Mówią, że można ustawić domyślny obszar nazw dla pakietu z nazywaniem go, np. Base.Core. Nazwałam moje pakiety jako Base.Core.bpl i Extra.Business.bpl. A skompilowane pliki mają taką nazwę. Jednak wszystkie jednostki w nich są nadal nazywane tak, jak poprzednio: User.pas -> User.dcu.
Teraz mam dwie klasy TUser w module User.pas: jedna w pakiecie Base.Core.bpl, druga w pakiecie Extra.Business.bpl. User.pas w dogrywce wygląda
unit User;
interface
uses
Base.User;
type
TUser = class(Base.User.TUser)
end;
Ale gdy chcę go skompilować, mam okno: „Usuń użytkownika Jednostka (e) Użytkownik nie stwierdzono w wymaganym pakiet podstawowy”.
Co mam zrobić, aby odziedziczyć nowego TUser z Base.User.TUser, tak jak może być na przykład w Javie?
P.S. Na wszelki wypadek używam Delphi XE2 IDE.
Nie powinieneś nazywać ich "Unit Base.User" i "Unit Business.User", jeśli chcesz użyć takiej notacji? –
Istnieje wiele jednostek w Core i Business ... I wszystkie są w SVN: (Zmiana nazwy wszystkich z nich jest ostatnią metodą ... Może być, można to zrobić łatwiej – omickron
Jestem z tobą. dokumentacja mówi jedno, ale program zachowuje się zupełnie inaczej –