powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Интересный вопрос с наследованием
4 сообщений из 29, страница 2 из 2
Интересный вопрос с наследованием
    #32354521
Hammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и чего?
Типа тады так:

procedure TForm1.Button1Click(Sender: TObject);
{}
function GetFieldsList( const ADataSet: TADOQuery ): String;
var
List: TStrings;
FieldsList: String;
i: Integer;
begin
List := TStringList.Create;
try
ADataSet.GetFieldNames( List );
FieldsList := List.CommaText;
for i := 0 to Length( FieldsList ) do
if FieldsList = ',' then FieldsList := ';';
finally
List.Free;
end;
Result := FieldsList;
end;
{}
var
FieldsList1, FieldsList2: String;
begin
with TDataModule2.Create( nil ) do
try
FieldsList1 := GetFieldsList( ADOQuery1 );
finally
Free;
end;
FieldsList2 := GetFieldsList( DataModule3.ADOQuery1 );
ShowMessage( FieldsList1 + ' ' + FieldsList2 );
end;


...
Рейтинг: 0 / 0
Интересный вопрос с наследованием
    #32355230
sv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sv
Гость
...однако работает

Вот если бы не создавая... ;-)
...
Рейтинг: 0 / 0
Интересный вопрос с наследованием
    #32355581
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот какой огород с хакеризмами можно нагородить... А можно просто применить ОО подход и задачка получается примитивная :

Самое простое - проверять
if Dataset is TMd2
then // это дочка - соотв. знаем, что есть ... поле.
else if Dataset is TMd1 then // это предок
else // Чужой dataset

Или так, если ожидаются разные Md2,Md3,Md4... с помощью признака :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Md1a=class(Md1)
  IsFather : Boolean;
end;

constructor Md1a::Create()
begin
  inherited;
  IsFather:=True;
end;

Md2=class(Md1a)
end;

constructor Md2::Create()
begin
  inherited;
  IsFather:=False;
end;


Md1a - будет новым предком (если нельзя модифицировать Md1, иначе можно сразу вписывать IsFather в Md1)

Если хочется работать прямо со списком полей, то заведите в базовом классе два списка - один определяется в базовом классе как эталонный - в конструкторе, скажем, а в дочернем определяется второй. И сравнивайте их на здоровье.
...
Рейтинг: 0 / 0
Интересный вопрос с наследованием
    #32355618
Sclif
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем если я правильно понимаю задачу, то надо сделать дву функции, одна из которых перегрузит другую, которая будет возвращать список полей. Тогда кастя к предку ты вызовешь метод предка. С методами типа GetFieldsList не выйден потому что функция не перегружается ни в предке ни в потомке, и вызываться она будет от того класса чей экземпляр создан.

Мне так кажется :)
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Интересный вопрос с наследованием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]