AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen

Ein Thema von norwegen60 · begonnen am 6. Nov 2018 · letzter Beitrag vom 11. Nov 2018
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
526 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zugriff auf gemeinsame Eigenschaft in unterschiedlichen Klassen

  Alt 11. Nov 2018, 12:01
Hallo Stahli,

zuerst mal Danke für deine Unetrstützung.

Delphi-Quellcode:
TBase = class
private
  FNr: Integer;
  FParentObject: TBase;
public
  function FoundParentClass(aClassName: String): TBase;
  function FoundParentItem(aItem: TBase): Boolen;
  property Nr: Integer read FNr write FNr;
  property ParentObject: TBase read FParentObject write FParentObject;
end;

function TBase.FoundParentItem(aItem: TBase): Boolen;
begin
  Result := False;
  if Assigned(ParentObject) then
  begin
    if (ParentObject = aItem) then
      Exit(True);
    Result := ParentObject.FoundParentItem(aItem);
  end;
end;
Ich glaube ich weiß wo mein Denkfehler liegt. Ich hatte bei MessData1 als Parent weiterhin die Liste (FItems) eingetragen. Damit musste ich natürlich wieder durch diese Liste. Sobald ich aber sage MessData1.ParentObject := MessData1List mit MessDataList = TMessDataList =class(TBase) sollte es gehen.


Das ist aber auch nicht mein Vorschlag.
Ich weiß. Ich will nur verstehen und habe auch da mal mit meinem Ansatz weiter getestet.


Kannst Du mal ein Unit hochladen, in der diese Klassen vollständig enthalten sind?
Es bräuchte ja keine GUI vorhanden sein - nur eine kompilierbare Unit. Dann könnte man (ich?) die mal entsprechend umbauen.
Der Code ist in 20 Jahren gewachsen und wir sind aktuell daran, ihn aufzuräumen. Noch aber sind viel zu viele Abhängigkeiten da. Wenn ich nicht weiter komme, versuche ich mal was zu extrahieren.

Ich hatte noch folgenden Ansatz:
Delphi-Quellcode:
  TMyObjectList<T> = class(TObjectList<T>)
  private
    FParentObject: TBase;
  public
    property ParentObject: Integer read FParentObject write FParentObject;
  end;

  TBaseList = class(TMyObjectList<TBase>);
 
  // Und die Suche nach einer bestimmten Klasse, z.B. TAnalysis
  lObject := ParentObject;
  repeat
    if lObject is TAnalysis then // gefunden
      Result := TAnalysis(lObject)
    else if ParentObject is TBase then // Wenn TBase eine Klasse höher
      lObject := TBase(lObject).ParentObject
    else if ParentObject is TBaseList then // Wenn Liste eine Klasse höhr
      lObject := TBaseList(lObject).ParentObject
    else
      lObject := nil;
  until (Result <> nil) or (lObject = nil);
Der code
Delphi-Quellcode:
else if ParentObject is TBaseList then
      lObject := TBaseList(lObject).ParentObject
funktioniert aber nicht nicht. Geht das irgendwie?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz