Einzelnen Beitrag anzeigen

4dk2

Registriert seit: 4. Sep 2007
176 Beiträge
 
#10

AW: Speicher Adresse überwachen?

  Alt 11. Apr 2016, 12:57
Ok, ich probier mal, das ist alles pseudo code, daher ist die Sinnhaftigkeit von den Variable Zuweisungen erstmal irrelevant.
Delphi-Quellcode:
type TTest=class
  private
    FA: double;
    FC: double;
    FB: double;
    procedure SetA(const Value: double);
    procedure SetB(const Value: double);
    procedure SetC(const Value: double);
  public
    property A:double read FA write SetA;
    property B:double read FB write SetB;
    property C:double read FC write SetC;

end;

var
  test:TTest;
  x,y,z,a,b,c {usw....}:double;


procedure init;
procedure calc;
procedure calc_help1(var a1,b1,c1);

implementation

procedure init;
begin
  //laden...
  x:=0;
  y:=1.5;
  z:=2.5;
  a:=0;
  b:=0;
  c:=0;
  //...

  //test per klasse:
  test:=TTest.create;
  test.A:=100;


end;

procedure calc;
var b2:double;
begin
  a:=100;
  calc_help1(a,b2,c);

  //das geht logischerweise nicht per klasse:
  //[Fehler] : Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
  with test do
    calc_help1(a,b,c);

end;

procedure calc_help1(var a1,b1,c1);
begin


  if a>100 then
  begin
    a1 := a1 - c1;
    b1 := c1 + a1;
  end;

  if a>200 then
  begin
    a1 := b1 - c1;
    b1 := c1 + a1;
  end;
end;

procedure calc_help2(var b1,c1);
begin
  //ich hab auch Funktionen die sich and den globalen variablen bedienen und ergebnisse liefern...
  b1 := a + c;
  c1 := 12345;
end;


{$R *.dfm}

{ TTest }

procedure TTest.SetA(const Value: double);
begin
  FA := Value;
end;

procedure TTest.SetB(const Value: double);
begin
  FB := Value;
end;

procedure TTest.SetC(const Value: double);
begin
  FC := Value;
end;
Ich würd es gerne per OOP regeln, aber ich kann nicht die paar tausend zeilen von den Berechnungen dafür umbauen.

und zu @hoika, ich kann leider die var parameter nicht entfernen. Das sind Funktionen wie calc_help1, die z.b. Geometrische Daten berechnen, und von überall aufgerufen werden können, mit unterschiedlichen parametern und mehrere Werte zurückliefern (bzw. können).
Gut ich könnte die nen Record zurückgeben lassen, aber dann müsste ich jeweils an dem Aufruf die Variabeln setzten.
Ich möchte aber solche intensiven Kode-Änerungen vermeiden.
Dann gibt es auch noch funktionen wie calc_help2, die auch noch teile von den Globalen Variablen nutzen und Ergebnisse liefern.
Mit einem with test do begin {...} end; könnte ich ja noch leben
  Mit Zitat antworten Zitat