Einzelnen Beitrag anzeigen

Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Setlength aufrufen von untergeordneter prozedur auf owner Klasse.

  Alt 4. Mär 2020, 08:25
@gemy:

Wenn ich es richtig verstanden habe, möchtest du immer, wenn ein Wert in TOrder "geändert" wird, diesen geänderten Wert in fMedArray "zufügen". Richtig?

TOrder ist für sich gekapselt und hat keinen Zugriff nach aussen auf TPattern.

Du könntest TOrder mitteilen, wer TPattern ist. Dazu erstellst du das "Property parent".

Du darfst aber nicht vergessen Parent anzugeben, wenn du ein Element zu OrderItems zufügst.


Delphi-Quellcode:
type
  Tpattern = class(Tobject)
  private
    fMedArr: array of currency;
  private
    type
    Torder = record
      fMissed_points: currency;
      procedure SetMissedPoints(val: currency);
    private
      FParent: Tpattern;
    public
      property Missed_points: currency Read fMissed_points Write SetMissedPoints;
      Property Parent: Tpattern read FParent write FParent;
    end;
  public
    OrderItems: array of Torder;
    procedure MedArr(const Value: currency);
  end;

procedure Tpattern.MedArr(const Value: currency);
begin
  fMedArr := fMedArr + [Value];
end;

procedure Tpattern.Torder.SetMissedPoints(val: currency);
begin
  fMissed_points := val;
  if assigned(FParent) then
    FParent.MedArr(val);
end;
Wobei ich jetzt nicht sagen will, dass dies besonders Toller Code ist. Und nichts ist getestet.

Insgesamt würde ich auch deine Namensgebung anpassen.

Die Procedure MedArr für einen Wert zu deinem Array hinzu. Besser wärde der Name Procedure AddToMedArr eine Procedure sollte beschreiben, was sie macht.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat