Eine unangenehme Besonderheit bei der AddOn-Programmierung ist, dass bei jedem Aufruf eines Events die Variablen grundsätzlich auf den Wert Null gesetzt werden, soll heißen definiert man in einem Event z.B. Test und belegt diese mit 1, so ist die gleiche Variable in einem anderen Event immer Null.
Damit das nicht passiert bzw. man mit der gleichen Variablen in einem anderen Event arbeiten kann, gibt es die AddOn-Befehle:
- cpSetIntegerVar('Name',Wert);
- cpSetFloatVar('Name',Wert);
- cpGetIntegerVar('Name');
- cpGetFloatVar('Name');
Integer: ganze natürliche Zahlen (inkl. Vorzeichen), z.b. 1, 2, -1, 0,5.....
Float: Gleitkommazahl (inkl. Vorzeichen) 1,2345, -3,456 ...
In unserem Beispiel muss man jetzt wie folgt vorgehen:
....Event StartZiel
var
Test : integer;
begin
Test:=1;
cpSetIntergerVar('Test',1);
end;
....Event TankenEinfahrt
var
Test : integer;
begin
Test:= cpGetIntegerVar('Test');
end;
Jetzt hat man erfolgreich den Variablenwert von Test in das andere Event "gerettet".......
und dann gleich noch einen Tip: man kann sich die Variablen-Namen auch zusammenbasteln. Oft benötigt man ja für jeden Fahrer und/oder Fahrzeug einen Variablenwert (z.B. StatusReifen).
Beispiel:
Es soll der Reifenzustand pro Fahrer abgespeichert werden bei einem Boxenstop:
Zustand 1 = Slick
Zustand 2 = Regenreifen
Wird bei also bei einem Boxenstop der Reifen gewechselt und man möchte den Zustand abspeichern, so sieht die Varaible wie folgt aus:
cpSetIntegerVar('StatusReifen'+inttostr(Cockpit.SlotID),1); // 1 = Slick
inttostr = Umwandlung einer Integerzahl in einen String, durch + wird der vorherige String (in diesem Fall StatusReifen) um den Inhalt von Cockpit.SlotID erweitert, also in StatusReifen1
Cockpit.SlotID = beinhaltet die ID, welche den Event (also Boxenstop) ausgelöst hat
--> Die Variable heißt dann jetzt im Klartext: StatusReifen1 (für Fahrer-ID 1) mit Inhalt 1