[fpc-pascal] Selecting Records with a variable
James Richters
james.richters at productionautomation.net
Sun Dec 20 16:02:21 CET 2020
What I’m hopping to accomplish isn't to get it to work... it's to consolidate a whole bunch of
functions and procedures that are all exactly the same except for which axis I am working with...
I have 9 possible Axis, X,Y,Z,W,L.R,A,B,C
And I have Procedures:
Procedure Move_X;
Begin
DoSomething(Variable1.X);
DoAThing2;
DoAThing3;
...
Do more things that are the same all the time
...
DoSomethingElse(Variable2.X);
Variable3.X := SomeFormula(Variable4.X * ScaleFactor.X);
...
70 lines of things what work only with the .X variable
...
End;
Procedure Move_Y;
Begin
DoSomething(Variable1.Y);
DoAThing2;
DoAThing3;
...
Do more things that are the same all the time
...
DoSomethingElse(Variable2.Y);
Variable3.Y := SomeFormula(Variable4.Y * ScaleFactor.Y);
...
70 lines of things what work only with the .Y variable
...
End;
...
Same thing 7 more times
...
This is a tedious situation. If I want to change something I have to copy and paste it 9 times then go fix all the variables 9 times.. and it's easy to make a mistake.
What I want is just one uncomplicated procedure:
Procedure Move_It(Axis_Letter:Char);
Begin
DoSomething(Variable1. Axis_Letter);
DoAThing2;
DoAThing3;
...
Do more things that are the same all the time
...
DoSomethingElse(Variable2. Axis_Letter);
Variable3. Axis_Letter := SomeFormula(Variable4. Axis_Letter * ScaleFactor. Axis_Letter);
...
70 lines of things what work only with the . Axis_Letter variable
...
End;
If I need a bunch of case statements, it's atcually worse than if I just have separate procedures.
Procedure Move_It(Axis_Letter:Char);
Begin
Case Axis_Letter of
X:
Begin
DoSomething(Variable1. X);
End;
Y:
Begin
DoSomething(Variable1. Y);
End;
...
7 more times
...
End;
DoAThing2;
DoAThing3;
...
Do more things that are the same all the time
...
Case Axis_Letter of
X:
Begin
DoSomethingElse(Variable2. X);
Variable3. X := SomeFormula(Variable4.X * ScaleFactor. X);
End;
Y:
Begin
DoSomethingElse(Variable2. Y);
Variable3. Y := SomeFormula(Variable4.Y * ScaleFactor.Y);
End;
...
7 more times
...
...
70 lines of things that all have a 9 case statements, sometimes I can combine them, most of the time not.
...
End;
James
More information about the fpc-pascal
mailing list