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