Na razie jest tyle. Typ string pascala tłumaczę na C++owy string z biblioteki iostream, a real na float.
#include <iostream>
using namespace std;
//interface uses mctools,sysutils,hamulce,Oerlikon_ESt;
//CONST
const bool Go=true;
const bool Hold=false; //dla CheckLocomotiveParameters}
const int ResArraySize=64; //dla silnikow elektrycznych}
const int MotorParametersArraySize=10;
const int maxcc=4; //max. ilosc odbierakow pradu}
const int LocalBrakePosNo=10; //ilosc nastaw hamulca pomocniczego}
const int MainBrakeMaxPos=10; //max. ilosc nastaw hamulca zasadniczego}
const int ManualBrakePosNo=20; //ilosc nastaw hamulca recznego}
//uszkodzenia toru}
const int dtrack_railwear=2;
const int dtrack_freerail=4;
const int dtrack_thinrail=8;
const int dtrack_railbend=16;
const int dtrack_plants=32;
const int dtrack_nomove=64;
const int dtrack_norail=128;
//uszkodzenia taboru}
const int dtrain_thinwheel=1; //dla lokomotyw}
const int dtrain_loadshift=1; //dla wagonow}
const int dtrain_wheelwear=2;
const int dtrain_bearing=4;
const int dtrain_coupling=8;
const int dtrain_ventilator=16; //dla lokomotywy el.}
const int dtrain_loaddamage=16; //dla wagonow}
const int dtrain_engine=32; //dla lokomotyw}
const int dtrain_loaddestroyed=32;//dla wagonow}
const int dtrain_axle=64;
const int dtrain_out=128; //wykolejenie}
//wagi prawdopodobienstwa dla funkcji FuzzyLogic}
const float p_elengproblem = 0.01;
const float p_elengdamage = 0.1;
const float p_coupldmg = 0.02;
const float p_derail=0.001;
const float p_accn=0.1;
const float p_slippdmg=0.001;
//typ sprzegu}
const int ctrain_virtual=0; //gdy pojazdy na tym samym torze się widzą wzajemnie
const int ctrain_coupler=1; //sprzeg fizyczny
const int ctrain_pneumatic=2; //przewody hamulcowe
const int ctrain_controll=4; //przewody sterujące (ukrotnienie)
const int ctrain_power=8; //przewody zasilające (WN)
const int ctrain_passenger=16; //mostek przejściowy
const int ctrain_scndpneumatic=32; //przewody 8 atm (żółte; zasilanie powietrzem)
const int ctrain_heating=64; //przewody ogrzewania WN
const int ctrain_depot=128; //nie rozłączalny podczas zwykłych manewrów (międzyczłonowy), we wpisie wartość ujemna
//typ hamulca elektrodynamicznego}
const int dbrake_none=0;
const int dbrake_passive=1;
const int dbrake_switch=2;
const int dbrake_reversal=4;
const int dbrake_automatic=8;
//status czuwaka/SHP}
//hunter-091012: rozdzielenie alarmow, dodanie testu czuwaka
const int s_waiting=1; //działa
const int s_aware=2; //czuwak miga
const int s_active=4; //SHP świeci
const int s_CAalarm=8; //buczy
const int s_SHPalarm=16; //buczy
const int s_CAebrake=32; //hamuje
const int s_SHPebrake=64; //hamuje
const int s_CAtest=128;
//dzwieki}
const int sound_none=0;
const int sound_loud=1;
const int sound_couplerstretch=2;
const int sound_bufferclamp=4;
const int sound_bufferbump=8;
const int sound_relay=16;
const int sound_manyrelay=32;
const int sound_brakeacc=64;
PhysicActivationFlag: boolean=false;
//szczególne typy pojazdów (inna obsługa) dla zmiennej TrainType
//zamienione na flagi bitowe, aby szybko wybierać grupę (np. EZT+SZT)
const int dt_Default=0;
const int dt_EZT=1;
const int dt_ET41=2;
const int dt_ET42=4;
const int dt_PseudoDiesel=8;
const int dt_ET22=$10; //używane od Megapacka
const int dt_SN61=$20; //nie używane w warunkach, ale ustawiane z CHK
const int dt_EP05=$40;
const int dt_ET40=$80;
const int dt_181=$100;
//stałe dla asynchronów
const int eimc_s_dfic=0;
const int eimc_s_dfmax=1;
const int eimc_s_p=2;
const int eimc_s_cfu=3;
const int eimc_s_cim=4;
const int eimc_s_icif=5;
const int eimc_f_Uzmax=7;
const int eimc_f_Uzh=8;
const int eimc_f_DU=9;
const int eimc_f_I0=10;
const int eimc_f_cfu=11;
const int eimc_p_F0=13;
const int eimc_p_a1=14;
const int eimc_p_Pmax=15;
const int eimc_p_Fh=16;
const int eimc_p_Ph=17;
const int eimc_p_Vh0=18;
const int eimc_p_Vh1=19;
const int eimc_p_Imax=20;
//zmienne dla asynchronów
int eimv_FMAXMAX=0;
int eimv_Fmax=1;
int eimv_ks=2;
int eimv_df=3;
int eimv_fp=4;
int eimv_U=5;
int eimv_pole=6;
int eimv_Ic=7;
int eimv_If=8;
int eimv_M=9;
int eimv_Fr=10;
int eimv_Ipoj=11;
int eimv_Pm=12;
int eimv_Pe=13;
int eimv_eta=14;
int eimv_fkr=15;
int eimv_Uzsmax=16;
int eimv_Pmax=17;
int eimv_Fzad=18;
int eimv_Imax=19;
//TYPE
//ogolne
/*TLocation = record
X,Y,Z: real; //lokacja}
end;*/
class TLocation
{
public:
float X;
float Y;
float Z;
};
/*TRotation = record
Rx,Ry,Rz: real; //rotacja}
end;*/
class TRotation
{
public:
float Rx;
float Ry;
float Rz;
};
/*TDimension= record
W,L,H: real; //wymiary}
end;*/
class TDimension
{
public:
float W;
float L;
float X;
};
/*TCommand = record
Command: string; //komenda}
Value1,Value2: real; //argumenty komendy}
Location: TLocation;
end;*/
class TCommand
{
public:
string Command;
float Value1;
float Value2;
TLocation Location;
};
Reg. obowiązki 11b.
Proszę poprawić.
Benek