diff --git a/Driver.cpp b/Driver.cpp index 7a211bd0..ab115041 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -26,6 +26,7 @@ http://mozilla.org/MPL/2.0/. #include "MemCell.h" #include "World.h" #include "dir.h" +#include "mctools.h" #define LOGVELOCITY 0 #define LOGORDERS 0 @@ -87,7 +88,7 @@ const double HardAcceleration = 0.9; const double PrepareTime = 2.0; //[s] przeb�yski �wiadomo�ci przy odpalaniu bool WriteLogFlag = false; -AnsiString StopReasonTable[] = { +string StopReasonTable[] = { // przyczyny zatrzymania ruchu AI "", // stopNone, //nie ma powodu - powinien jecha� "Off", // stopSleep, //nie zosta� odpalony, to nie pojedzie @@ -244,7 +245,8 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len) if (trTrack->iNumDynamics > 0) // a skrzy�owanie zawiera pojazd { if (Global::iWriteLogEnabled & 8) - WriteLog("Tor " + trTrack->NameGet() + " zajety przed pojazdem. Num=" + trTrack->iNumDynamics + "Dist= " + fDist); + WriteLog("Tor " + trTrack->NameGet() + " zajety przed pojazdem. Num=" + + to_string(trTrack->iNumDynamics) + "Dist= " + to_string(fDist)); fVelNext = 0.0; // to zabroni� wjazdu (chyba �e ten z przodu te� jedzie prosto) } @@ -267,7 +269,8 @@ bool TSpeedPos::Update(vector3 *p, vector3 *dir, double &len) 0) // je�li jeszcze nie wjechano na tor, a co� na nim jest { if (Global::iWriteLogEnabled & 8) - WriteLog("Rozjazd " + trTrack->NameGet() + " zajety przed pojazdem. Num=" + trTrack->iNumDynamics + "Dist= "+fDist); + WriteLog("Rozjazd " + trTrack->NameGet() + " zajety przed pojazdem. Num=" + + to_string(trTrack->iNumDynamics) + "Dist= "+ to_string(fDist)); //fDist -= 30.0; fVelNext = 0.0; // to niech stanie w zwi�kszonej odleg�o�ci // else if (fVelNext==0.0) //je�li zosta�a wyzerowana @@ -810,7 +813,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN { // o ile dana pozycja tabelki jest istotna if (sSpeedTable[i].iFlags & spPassengerStopPoint) { // je�li przystanek, trzeba obs�u�y� wg rozk�adu - if (sSpeedTable[i].evEvent->CommandGet() != AnsiString(asNextStop.c_str())) + if (sSpeedTable[i].evEvent->CommandGet() != asNextStop) { // je�li nazwa nie jest zgodna if (sSpeedTable[i].fDist < -fLength) // je�li zosta� przejechany sSpeedTable[i].iFlags = @@ -830,7 +833,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN #if LOGSTOPS WriteLog(pVehicle->asName + " as " + TrainParams->TrainName + ": at " + to_string(GlobalTime->hh) + ":" + to_string(GlobalTime->mm) + - " skipped " + asNextStop.); // informacja + " skipped " + asNextStop); // informacja #endif fLastStopExpDist = mvOccupied->DistCounter + 0.250 + 0.001 * fLength; // przy jakim dystansie (stanie @@ -1026,7 +1029,7 @@ TCommandType TController::TableUpdate(double &fVelDes, double &fDist, double &fN else { // je�li dojechali�my do ko�ca rozk�adu #if LOGSTOPS - WriteLog(pVehicle->asName + " as " + TrainParams->TrainName) + + WriteLog(pVehicle->asName + " as " + TrainParams->TrainName + ": at " + to_string(GlobalTime->hh) + ":" + to_string(GlobalTime->mm) + " end of route."); // informacja @@ -1486,17 +1489,17 @@ TController::TController(bool AI, TDynamicObject *NewControll, bool InitPsyche, if (WriteLogFlag) { mkdir("physicslog\\"); - LogFile.open("physicslog\\" + VehicleName.c_str() + ".dat", + LogFile.open(string("physicslog\\" + VehicleName + ".dat").c_str(), std::ios::in | std::ios::out | std::ios::trunc); #if LOGPRESS == 0 - LogFile << AnsiString(" Time [s] Velocity [m/s] Acceleration [m/ss] Coupler.Dist[m] " + LogFile << string(" Time [s] Velocity [m/s] Acceleration [m/ss] Coupler.Dist[m] " "Coupler.Force[N] TractionForce [kN] FrictionForce [kN] " "BrakeForce [kN] BrakePress [MPa] PipePress [MPa] " "MotorCurrent [A] MCP SCP BCP LBP DmgFlag Command CVal1 CVal2") .c_str() << "\r\n"; #endif #if LOGPRESS == 1 - LogFile << AnsiString("t\tVel\tAcc\tPP\tVVP\tBP\tBVP\tCVP").c_str() << "\n"; + LogFile << string("t\tVel\tAcc\tPP\tVVP\tBP\tBVP\tCVP").c_str() << "\n"; #endif LogFile.flush(); } @@ -1874,8 +1877,8 @@ bool TController::CheckVehicles(TOrders user) { if (TrainParams) if (p->asDestination == "none") - p->DestinationSet(AnsiString(TrainParams->Relation2.c_str()), - AnsiString(TrainParams->TrainName.c_str())); // relacja docelowa, je�li nie by�o + p->DestinationSet(TrainParams->Relation2, + TrainParams->TrainName); // relacja docelowa, je�li nie by�o if (AIControllFlag) // je�li prowadzi komputer p->RaLightsSet(0, 0); // gasimy �wiat�a if (p->MoverParameters->EnginePowerSource.SourceType == CurrentCollector) @@ -2890,7 +2893,7 @@ void TController::RecognizeCommand() } void TController::PutCommand(std::string NewCommand, double NewValue1, double NewValue2, - const TLocation &NewLocation, TStopReason reason = stopComm) + const TLocation &NewLocation, TStopReason reason) { // wys�anie komendy przez event PutValues, jak pojazd ma obsad�, to wysy�a tutaj, a nie do pojazdu // bezpo�rednio vector3 sl; @@ -2902,7 +2905,7 @@ void TController::PutCommand(std::string NewCommand, double NewValue1, double Ne } bool TController::PutCommand(std::string NewCommand, double NewValue1, double NewValue2, - const vector3 *NewLocation, TStopReason reason = stopComm) + const vector3 *NewLocation, TStopReason reason) { // analiza komendy if (NewCommand == "CabSignal") { // SHP wyzwalane jest przez cz�on z obsad�, ale obs�ugiwane przez silnikowy @@ -2926,16 +2929,16 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne mvOccupied->PutCommand("Emergency_brake", 1.0, 1.0, mvOccupied->Loc); return true; // za�atwione } - else if (NewCommand.Pos("Timetable:") == 1) + else if (NewCommand.find("Timetable:") == 0) { // przypisanie nowego rozk�adu jazdy, r�wnie� prowadzonemu przez u�ytkownika - NewCommand.Delete(1, 10); // zostanie nazwa pliku z rozk�adem + NewCommand = NewCommand.erase(0, 10); // zostanie nazwa pliku z rozk�adem #if LOGSTOPS WriteLog("New timetable for " + pVehicle->asName + ": " + NewCommand); // informacja #endif if (!TrainParams) - TrainParams = new TTrainParameters(std::string(NewCommand.c_str())); // rozk�ad jazdy + TrainParams = new TTrainParameters(NewCommand); // rozk�ad jazdy else - TrainParams->NewName(std::string(NewCommand.c_str())); // czy�ci tabelk� przystank�w + TrainParams->NewName(NewCommand); // czy�ci tabelk� przystank�w delete tsGuardSignal; tsGuardSignal = NULL; // wywalenie kierownika if (NewCommand != "none") @@ -2947,7 +2950,7 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne if (ConversionError == -8) ErrorLog("Missed timetable: " + NewCommand); WriteLog("Cannot load timetable file " + NewCommand + "\r\nError " + - ConversionError + " in position " + TrainParams->StationCount); + to_string(ConversionError) + " in position " + to_string(TrainParams->StationCount)); NewCommand = ""; // puste, dla wymiennej tekstury } else @@ -2959,10 +2962,9 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne asNextStop = TrainParams->NextStop(); iDrivigFlags |= movePrimary; // skoro dosta� rozk�ad, to jest teraz g��wnym NewCommand = Global::asCurrentSceneryPath + NewCommand + ".wav"; // na razie jeden - if (FileExists(NewCommand)) + if (fileExists(NewCommand)) { // wczytanie d�wi�ku odjazdu podawanego bezpo�renido - tsGuardSignal = new TTextSound(); - tsGuardSignal->Init(NewCommand.c_str(), 30, pVehicle->GetPosition().x, + tsGuardSignal = new TTextSound(NewCommand.c_str(), 30, pVehicle->GetPosition().x, pVehicle->GetPosition().y, pVehicle->GetPosition().z, false); // rsGuardSignal->Stop(); @@ -2970,23 +2972,22 @@ bool TController::PutCommand(std::string NewCommand, double NewValue1, double Ne } else { - NewCommand.Insert("radio", NewCommand.Length() - 3); // wstawienie przed kropk� - if (FileExists(NewCommand)) + NewCommand = NewCommand.insert(NewCommand.find_last_of("."),"radio"); // wstawienie przed kropk� + if (fileExists(NewCommand)) { // wczytanie d�wi�ku odjazdu w wersji radiowej (s�ycha� tylko w kabinie) - tsGuardSignal = new TTextSound(); - tsGuardSignal->Init(NewCommand.c_str(), -1, pVehicle->GetPosition().x, + tsGuardSignal = new TTextSound(NewCommand.c_str(), -1, pVehicle->GetPosition().x, pVehicle->GetPosition().y, pVehicle->GetPosition().z, false); iGuardRadio = iRadioChannel; } } - NewCommand = AnsiString(TrainParams->Relation2.c_str()); // relacja docelowa z rozk�adu + NewCommand = TrainParams->Relation2; // relacja docelowa z rozk�adu } // jeszcze poustawia� tekstury na wy�wietlaczach TDynamicObject *p = pVehicles[0]; while (p) { - p->DestinationSet(NewCommand, AnsiString(TrainParams->TrainName.c_str())); // relacja docelowa + p->DestinationSet(NewCommand, TrainParams->TrainName); // relacja docelowa p = p->Next(); // pojazd pod��czony od ty�u (licz�c od czo�a) } } @@ -4880,7 +4881,7 @@ void TController::OrdersDump() WriteLog("Orders for " + pVehicle->asName + ":"); for (int b = 0; b < maxorders; ++b) { - WriteLog(AnsiString(b) + ": " + Order2Str(OrderList[b]) + (OrderPos == b ? " <-" : "")); + WriteLog(to_string(b) + ": " + Order2Str(OrderList[b]) + (OrderPos == b ? " <-" : "")); if (b) // z wyj�tkiem pierwszej pozycji if (OrderList[b] == Wait_for_orders) // je�li ko�cowa komenda break; // dalej nie trzeba @@ -4988,7 +4989,7 @@ void TController::OrdersInit(double fVel) // Ale mozna by je zapodac ze scenerii }; -AnsiString TController::StopReasonText() +string TController::StopReasonText() { // informacja tekstowa o przyczynie zatrzymania if (eStopReason != 7) // zawalidroga b�dzie inaczej return StopReasonTable[eStopReason]; @@ -5300,11 +5301,11 @@ std::string TController::NextStop() return ""; // tu nie powinno nigdy wej�� TMTableLine *t = TrainParams->TimeTable + TrainParams->StationIndex; if (t->Dh >= 0) // je�li jest godzina odjazdu - return asNextStop.substr(19, 30) + " " + Global::to_string(t->Dh) + ":" + - Global::to_string(t->Dm); // odjazd + return asNextStop.substr(19, 30) + " " + to_string(t->Dh) + ":" + + to_string(t->Dm); // odjazd else if (t->Ah >= 0) // przyjazd - return asNextStop.substr(19, 30) + " (" + Global::to_string(t->Ah) + ":" + - Global::to_string(t->Am) + ")"; // przyjazd + return asNextStop.substr(19, 30) + " (" + to_string(t->Ah) + ":" + + to_string(t->Am) + ")"; // przyjazd return ""; }; @@ -5477,5 +5478,5 @@ void TController::RouteSwitch(int d) }; std::string TController::OwnerName() { - return pVehicle ? pVehicle->MoverParameters->Name : ("none"); + return pVehicle ? pVehicle->MoverParameters->Name : string("none"); }; diff --git a/EU07.bpr b/EU07.bpr index 1a2343ba..bba60ba9 100644 --- a/EU07.bpr +++ b/EU07.bpr @@ -13,8 +13,8 @@ ResourceManager.obj VBO.obj mtable.obj TextureDDS.obj opengl\ARB_Multisample.obj Float3d.obj Classes.obj Driver.obj Names.obj Console.obj McZapkie\Mover.obj McZapkie\hamulce.obj - McZapkie\Oerlikon_ESt.obj McZapkie\friction.obj Console\PoKeys55.obj - Forth.obj Console\LPT.obj PyInt.obj"/> + McZapkie\Oerlikon_ESt.obj McZapkie\friction.obj McZapkie\mctools.obj + Console\PoKeys55.obj Forth.obj Console\LPT.obj PyInt.obj"/> diff --git a/EU07.cpp b/EU07.cpp index 5f5f9447..908b3141 100644 --- a/EU07.cpp +++ b/EU07.cpp @@ -83,6 +83,7 @@ USEUNIT("McZapkie\Mover.cpp"); USEUNIT("McZapkie\hamulce.cpp"); USEUNIT("McZapkie\Oerlikon_ESt.cpp"); USEUNIT("McZapkie\friction.cpp"); +USEUNIT("McZapkie\mctools.cpp"); USEUNIT("Console\PoKeys55.cpp"); USEUNIT("Forth.cpp"); USEUNIT("Console\LPT.cpp"); @@ -761,3 +762,6 @@ int WINAPI WinMain(HINSTANCE hInstance, // instance KillGLWindow(); // kill the window return (msg.wParam); // exit the program } + + + diff --git a/Event.cpp b/Event.cpp index 213c2d0a..08cd8092 100644 --- a/Event.cpp +++ b/Event.cpp @@ -24,6 +24,7 @@ http://mozilla.org/MPL/2.0/. #include "MemCell.h" #include "Globals.h" #include "Ground.h" +#include "McZapkie\mctools.h" #pragma package(smart_init) TEvent::TEvent(string m) diff --git a/Globals.cpp b/Globals.cpp index 9daf7891..b9b115a9 100644 --- a/Globals.cpp +++ b/Globals.cpp @@ -927,103 +927,5 @@ double Global::CutValueToRange(double min, double value, double max) return value; }; -std::string to_string(int _Val) -{ - std::ostringstream o; - o << _Val; - return o.str(); -}; - -std::string to_string(unsigned int _Val) -{ - std::ostringstream o; - o << _Val; - return o.str(); -}; - -std::string to_string(double _Val) -{ - std::ostringstream o; - o << _Val; - return o.str(); -}; - -std::string to_string(int _Val, int precision) -{ - std::ostringstream o; - o << std::fixed << std::setprecision(precision); - o << _Val; - return o.str(); -}; - -std::string to_string(double _Val, int precision) -{ - std::ostringstream o; - o << std::fixed << std::setprecision(precision); - o << _Val; - return o.str(); -}; - -std::string to_string(int _Val, int precision, int width) -{ - std::ostringstream o; - o.width(width); - o << std::fixed << std::setprecision(precision); - o << _Val; - return o.str(); -}; - -std::string to_string(double _Val, int precision, int width) -{ - std::ostringstream o; - o.width(width); - o << std::fixed << std::setprecision(precision); - o << _Val; - return o.str(); -}; - -std::string to_hex_str(double _Val, int precision, int width) -{ - std::ostringstream o; - if (width) - o.width(width); - o << std::fixed << std::hex; - if (precision) - o << std::setprecision(precision); - o << _Val; - return o.str(); -}; - -int stol_def(const std::string &str, const int &DefaultValue) -{ - // this function was developed iteratively on Codereview.stackexchange - // with the assistance of @Corbin - std::size_t len = str.size(); - while (std::isspace(str[len - 1])) - len--; - if (len == 0) - return DefaultValue; - errno = 0; - char *s = new char[len + 1]; - std::strncpy(s, str.c_str(), len); - char *p; - int result = strtol(s, &p, 0); - if ((*p != '\0') || (errno != 0)) - { - return DefaultValue; - } - delete s; - return result; -} - -std::string ToLower(std::string text) -{ - std::transform(text.begin(), text.end(), text.begin(), ::tolower); -} - -std::string ToUpper(std::string text) -{ - std::transform(text.begin(), text.end(), text.begin(), ::toupper); -} #pragma package(smart_init) diff --git a/Globals.h b/Globals.h index 7999ffc9..464b983d 100644 --- a/Globals.h +++ b/Globals.h @@ -326,19 +326,7 @@ class Global static double CutValueToRange(double min, double value, double max); }; - std::string to_string(int _Val); - std::string to_string(unsigned int _Val); - std::string to_string(int _Val, int precision); - std::string to_string(int _Val, int precision, int width); - std::string to_string(double _Val); - std::string to_string(double _Val, int precision); - std::string to_string(double _Val, int precision, int width); - std::string to_hex_str(int _Val, int precision = 0, int width = 0); - int stol_def(const std::string & str, const int & DefaultValue); - - std::string ToLower(std::string text); - std::string ToUpper(std::string text); //--------------------------------------------------------------------------- #endif diff --git a/Ground.cpp b/Ground.cpp index d8e6a874..5067c0c5 100644 --- a/Ground.cpp +++ b/Ground.cpp @@ -1760,7 +1760,6 @@ TGroundNode * TGround::AddGroundNode(cParser *parser) 3.0; break; case TP_SOUND: - tmp->tsStaticSound = new TTextSound; parser->getTokens(3); *parser >> tmp->pCenter.x >> tmp->pCenter.y >> tmp->pCenter.z; tmp->pCenter.RotateY(aRotate.y / 180.0 * M_PI); // Ra 2014-11: uwzglêdnienie rotacji @@ -1769,7 +1768,7 @@ TGroundNode * TGround::AddGroundNode(cParser *parser) *parser >> token; str = token; //str = AnsiString(token.c_str()); - tmp->tsStaticSound->Init(strdup(str.c_str()), sqrt(tmp->fSquareRadius), tmp->pCenter.x, + tmp->tsStaticSound = new TTextSound(strdup(str.c_str()), sqrt(tmp->fSquareRadius), tmp->pCenter.x, tmp->pCenter.y, tmp->pCenter.z, false, rmin); if (rmin < 0.0) rmin = diff --git a/Logs.h b/Logs.h index bbe45756..7080b950 100644 --- a/Logs.h +++ b/Logs.h @@ -24,7 +24,7 @@ void ErrorLog(const std::string &str, bool newline = true); void WriteLog(const AnsiString &str, bool newline = true); void WriteLog(const std::string &str, bool newline = true); void CommLog(const char *str); -void CommLog(const std::string); +void CommLog(const std::string &str); void CommLog(const AnsiString &str); //--------------------------------------------------------------------------- #endif diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index b5b96c14..c586f89d 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -14,6 +14,7 @@ http://mozilla.org/MPL/2.0/. #include "Oerlikon_ESt.h" #include "hamulce.h" #include +#include /* diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index d7015ac2..7e9b3b51 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -23,7 +23,7 @@ http://mozilla.org/MPL/2.0/. #include "Mover.h" #include "../globals.h" //#include "../qutils.h" -#include "mctools.h" +#include #include "../logs.h" #include "hamulce.h" #include "Oerlikon_ESt.h" @@ -3574,17 +3574,17 @@ double TMoverParameters::Adhesive(double staticfriction) { if (SandDose) adhesive = (Max0R(staticfriction * (100.0 + Vel) / ((50.0 + Vel) * 11.0), 0.048)) * - (11.0 - 2.0 * random(0.0, 1.0)); + (11.0 - 2.0 * Random(0.0, 1.0)); else adhesive = (staticfriction * (100.0 + Vel) / ((50.0 + Vel) * 10)) * - (11.0 - 2.0 * random(0.0, 1.0)); + (11.0 - 2.0 * Random(0.0, 1.0)); } else { if (SandDose) - adhesive = (0.048) * (11 - 2 * random(0.0, 1.0)); + adhesive = (0.048) * (11 - 2 * Random(0.0, 1.0)); else - adhesive = (staticfriction * 0.02) * (11 - 2 * random(0.0, 1.0)); + adhesive = (staticfriction * 0.02) * (11 - 2 * Random(0.0, 1.0)); } // WriteLog(FloatToStr(adhesive)); // tutaj jest na poziomie 0.2 - 0.3 return adhesive; @@ -5409,12 +5409,12 @@ int mSize; double nMmax, nnMmax, nMnmax, nnmax, nnominalfill, nMstand; int nSize; -int ti(std::string val) +/*inline int ti(std::string val) { return atoi(val.c_str()); } -double td(std::string val) +inline double td(std::string val) { return atof(val.c_str()); } @@ -5430,14 +5430,15 @@ std::string ts(std::string val) std::string tS(std::string val) { return ToUpper(val); -} +}*/ // ************************************************************************************************* // Q: 20160717 // ************************************************************************************************* -int Pos(std::string find, std::string in) +int Pos(std::string str_find, std::string in) { - return (in.Pos(find)); + size_t pos = in.find(str_find); + return (pos ? pos : 0); } // ************************************************************************************************* @@ -5446,7 +5447,7 @@ int Pos(std::string find, std::string in) bool issection(std::string name) { sectionname = name; - if (xline.Pos(name) > 0) + if (xline.find(name) != string::npos) { lastsectionname = name; return true; @@ -5470,19 +5471,19 @@ std::string getkeyval(int rettype, std::string key) if (Pos(key, xline) > 0) // jezeli jest klucz w swkcji... { - int klen = key.Length(); + int klen = key.length(); int kpos = Pos(key, xline) - 1; - temp.Delete(1, kpos + klen); - if (temp.Pos(" ") > 0) - to = temp.Pos(" "); + temp.erase(0, kpos + klen); + if (temp.find(" ") != string::npos) + to = temp.find(" "); else to = 255; - kval = temp.SubString(1, to); + kval = temp.substr(0, to); if (kval != "") - kval = kval.Trim(); // wyciagnieta wartosc + kval = TrimSpace(kval); // wyciagnieta wartosc - sectionname = StringReplace(sectionname, ":", "", TReplaceFlags() << rfReplaceAll); - sectionname = StringReplace(sectionname, ".", "", TReplaceFlags() << rfReplaceAll); + sectionname = ExchangeCharInString(sectionname, (char)":", (char)""); + sectionname = ExchangeCharInString(sectionname, (char)".", (char)""); //--WriteLog(sectionname + "." + keyname + " val= [" + kval + "]"); // if (rettype == 1) vS = kval; @@ -5490,8 +5491,9 @@ std::string getkeyval(int rettype, std::string key) // if (kval != "" && rettype == 3) vD = StrToFloat(kval); } else - kval = "0"; // gdy nie bylo klucza TODO: dodac do funkcji parametr z wartoscia fabryczna + kval = ""; // gdy nie bylo klucza TODO: dodac do funkcji parametr z wartoscia fabryczna // UWAGA! 0 moze powodowac bledy, przemyslec zwracanie wartosci gdy nie ma klucza!!! + // zwraca pusty klucz GF 2016-10-26 return kval; } @@ -5501,6 +5503,32 @@ int MARKERROR(int code, std::string type, std::string msg) return code; } +int s2NPW(string s) +{ // wylicza ilosc osi napednych z opisu ukladu osi + const char A = (char)"A" - (char)1; + int k; + int NPW = 0; + for (k = 0; k < s.length(); k++) + { + if (s[k] >= (char)"A" && s[k] <= (char)"Z") + NPW += s[k] - A; + } + return NPW; +} + +int s2NNW(string s) +{ // wylicza ilosc osi nienapedzanych z opisu ukladu osi + const char Zero = (char)"0"; + int k; + int NNW = 0; + for (k = 0; k < s.length(); k++) + { + if (s[k] >= (char)"1" && s[k] <= (char)"9") + NNW += s[k] - Zero; + } + return NNW; +} + // ************************************************************************************************* // Q: 20160717 // ************************************************************************************************* @@ -5515,27 +5543,27 @@ bool TMoverParameters::readMPT(int ln, std::string xline) if (ln > 0) // 0 to nazwa sekcji - MotorParamTable0: { //--WriteLog("MPT: " + xline); - x = split(xline.c_str(), ' '); + x = Split(xline, ' '); - p0 = Trim(x[0].c_str()); - p1 = Trim(x[1].c_str()); - p2 = Trim(x[2].c_str()); - p3 = Trim(x[3].c_str()); - p4 = Trim(x[4].c_str()); - p5 = Trim(x[5].c_str()); - p6 = Trim(x[6].c_str()); + p0 = TrimSpace(x[0]); + p1 = TrimSpace(x[1]); + p2 = TrimSpace(x[2]); + p3 = TrimSpace(x[3]); + p4 = TrimSpace(x[4]); + p5 = TrimSpace(x[5]); + p6 = TrimSpace(x[6]); if (AutoRelayType == 0) as = false; - bl = StrToInt(p0); // numer pozycji + bl = atoi(p0.c_str()); // numer pozycji - MotorParam[StrToInt(p0)].mfi = StrToFloat(p1); - MotorParam[StrToInt(p0)].mIsat = StrToFloat(p2); - MotorParam[StrToInt(p0)].mfi0 = StrToFloat(p3); - MotorParam[StrToInt(p0)].fi = StrToFloat(p4); - MotorParam[StrToInt(p0)].Isat = StrToFloat(p5); - MotorParam[StrToInt(p0)].fi0 = StrToFloat(p6); - MotorParam[StrToInt(p0)].AutoSwitch = as; + MotorParam[bl].mfi = atof(p1.c_str()); + MotorParam[bl].mIsat = atof(p2.c_str()); + MotorParam[bl].mfi0 = atof(p3.c_str()); + MotorParam[bl].fi = atof(p4.c_str()); + MotorParam[bl].Isat = atof(p5.c_str()); + MotorParam[bl].fi0 = atof(p6.c_str()); + MotorParam[bl].AutoSwitch = as; //--WriteLog(":::: " + p0 + "," + p1 + "," + p2 + "," + p3 + "," + p4 + "," + p5 + "," + //p6); @@ -5558,29 +5586,29 @@ bool TMoverParameters::readRLIST(int ln, std::string xline) // WriteLog("RLIST: " + xline); xline = Tab2Sp(xline); // zamieniamy taby na spacje (ile tabow tyle spacji bedzie) - xxx = trim_and_reduce_spaces(stdstrtochar(xline.c_str())); // konwertujemy na *char i + xxx = TrimAndReduceSpaces(xline.c_str()); // konwertujemy na *char i // ograniczamy spacje pomiedzy // parametrami do jednej - x = split(xxx, ' '); // split je wskaznik na char jak i std::string + x = Split(xxx, ' '); // split je wskaznik na char jak i std::string - p0 = Trim(x[0].c_str()); - p1 = Trim(x[1].c_str()); - p2 = Trim(x[2].c_str()); - p3 = Trim(x[3].c_str()); - p4 = Trim(x[4].c_str()); - p5 = Trim(x[5].c_str()); + p0 = TrimSpace(x[0]); + p1 = TrimSpace(x[1]); + p2 = TrimSpace(x[2]); + p3 = TrimSpace(x[3]); + p4 = TrimSpace(x[4]); + p5 = TrimSpace(x[5]); int k = ln - 1; - RlistSize = s2b(mSize); + RlistSize = (mSize); if (RlistSize > ResArraySize) ConversionError = -4; - RList[k].Relay = p0.ToInt(); // int - RList[k].R = p1.ToDouble(); // double - RList[k].Bn = p2.ToInt(); // int - RList[k].Mn = p3.ToInt(); // int + RList[k].Relay = atoi(p0.c_str()); // int + RList[k].R = atof(p1.c_str()); // double + RList[k].Bn = atoi(p2.c_str()); // int + RList[k].Mn = atoi(p3.c_str()); // int RList[k].AutoSwitch = false; // p4.ToInt(); //--WriteLog("RLIST: " + p0 + "," + p1 + "," + p2 + "," + p3 + "," + p4); @@ -5603,19 +5631,19 @@ bool TMoverParameters::readBPT(int ln, std::string xline) { // WriteLog("BPT: " + xline); xline = Tab2Sp(xline); - xxx = trim_and_reduce_spaces(stdstrtochar(xline.c_str())); - x = split(xxx, ' '); + xxx = TrimAndReduceSpaces(xline.c_str()); + x = Split(xxx, ' '); - p0 = Trim(x[0].c_str()); - p1 = Trim(x[1].c_str()); - p2 = Trim(x[2].c_str()); - p3 = Trim(x[3].c_str()); - p4 = Trim(x[4].c_str()); + p0 = TrimSpace(x[0]); + p1 = TrimSpace(x[1]); + p2 = TrimSpace(x[2]); + p3 = TrimSpace(x[3]); + p4 = TrimSpace(x[4]); - k = s2iE(p0); - BrakePressureTable[k].PipePressureVal = p1.ToDouble(); - BrakePressureTable[k].BrakePressureVal = p2.ToDouble(); - BrakePressureTable[k].FlowSpeedVal = p3.ToDouble(); + k = atoi(p0.c_str()); + BrakePressureTable[k].PipePressureVal = atof(p1.c_str()); + BrakePressureTable[k].BrakePressureVal = atof(p2.c_str()); + BrakePressureTable[k].FlowSpeedVal = atof(p3.c_str()); if (p4 == "Pneumatic") BrakePressureTable[k].BrakeType = Pneumatic; else if (p4 == "ElectroPneumatic") @@ -5685,19 +5713,28 @@ void TMoverParameters::BrakeSubsystemDecode() BrakeSubsystem = ss_None; switch (BrakeValve) { - case W, W_Lu_L, W_Lu_VI, W_Lu_XR: + case W: + case W_Lu_L: + case W_Lu_VI: + case W_Lu_XR: BrakeSubsystem = ss_W; break; - case ESt3, ESt3AL2, ESt4, EP2, EP1: + case ESt3: + case ESt3AL2: + case ESt4: + case EP2: + case EP1: BrakeSubsystem = ss_ESt; break; case KE: BrakeSubsystem = ss_KE; break; - case CV1, CV1_L_TR: + case CV1: + case CV1_L_TR: BrakeSubsystem = ss_Dako; break; - case LSt, EStED: + case LSt: + case EStED: BrakeSubsystem = ss_LSt; break; } @@ -5802,18 +5839,18 @@ void TMoverParameters::PowerParamDecode(std::string lines, std::string prefix, case CurrentCollector: { - PowerParamDecode.CollectorParameters.CollectorsNo = s2lE(jCollectorsNo); - PowerParamDecode.CollectorParameters.MinH = s2rE(jMinH); - PowerParamDecode.CollectorParameters.MaxH = s2rE(jMaxH); - PowerParamDecode.CollectorParameters.CSW = s2rE(jCSW); // szerokoœæ czêœci roboczej - PowerParamDecode.CollectorParameters.MaxV = s2rE(jMaxVoltage); + PowerParamDecode.CollectorParameters.CollectorsNo = (jCollectorsNo); + PowerParamDecode.CollectorParameters.MinH = (jMinH); + PowerParamDecode.CollectorParameters.MaxH = (jMaxH); + PowerParamDecode.CollectorParameters.CSW = (jCSW); // szerokoœæ czêœci roboczej + PowerParamDecode.CollectorParameters.MaxV = (jMaxVoltage); // s:=jMinV; //napiêcie roz³¹czaj¹ce WS if (jMinV == 0) PowerParamDecode.CollectorParameters.MinV = 0.5 * PowerParamDecode.CollectorParameters.MaxV; // gdyby parametr nie podany else - PowerParamDecode.CollectorParameters.MinV = s2rE(jMinV); + PowerParamDecode.CollectorParameters.MinV = (jMinV); //-s:=ExtractKeyWord(lines,'InsetV='); //napiêcie wymagane do za³¹czenia WS //-if s='' then @@ -5825,12 +5862,12 @@ void TMoverParameters::PowerParamDecode(std::string lines, std::string prefix, PowerParamDecode.CollectorParameters.MinPress = 2.0; // domyœlnie 2 bary do za³¹czenia // WS else - PowerParamDecode.CollectorParameters.MinPress = s2rE(jMinPress); + PowerParamDecode.CollectorParameters.MinPress = (jMinPress); // s:=ExtractKeyWord(lines,'MaxPress='); //maksymalne ciœnienie za reduktorem if (jMaxPress == 0) - PowerParamDecode.CollectorParameters.MaxPress = 5.0 + 0.001 * (random(50) - random(50)); + PowerParamDecode.CollectorParameters.MaxPress = 5.0 + 0.001 * (Random(50) - Random(50)); else - PowerParamDecode.CollectorParameters.MaxPress = s2rE(jMaxPress); + PowerParamDecode.CollectorParameters.MaxPress = (jMaxPress); } // case PowerCable: //{ @@ -5862,9 +5899,9 @@ void TMoverParameters::PowerParamDecode(std::string lines, std::string prefix, // ************************************************************************************************* bool TMoverParameters::LoadFIZ(std::string chkpath) { - const param_ok = 1; - const wheels_ok = 2; - const dimensions_ok = 4; + const int param_ok = 1; + const int wheels_ok = 2; + const int dimensions_ok = 4; int ishash; int bl, i, k; @@ -5892,6 +5929,11 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) // appdir = ExtractFilePath(ParamStr(0)); ifstream in(file.c_str()); + if (!in.is_open()) + { + WriteLog("E8 - FIZ FILE NOT EXIST."); + return false; + } bool secBPT, secMotorParamTable0, secPower, secEngine, secParam, secLoad, secDimensions, secWheels, secBrake, secBuffCoupl, secCntrl, secSecurity, secLight, secCircuit, secRList, @@ -5910,7 +5952,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) if ((ishash == 0)) { - if (xline.Length() == 0) + if (xline.length() == 0) startBPT = false; // Tablica parametyrow hamulca nie ma znacznika konca :( if (issection("END-MPT")) startMPT = false; @@ -5921,207 +5963,207 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) { secParam = true; SetFlag(OKFlag, param_ok); - aCategory = ts(getkeyval(1, "Category")); - aType = tS(getkeyval(1, "Type")); - aMass = td(getkeyval(3, "M")); - aMred = td(getkeyval(3, "Mred")); - aVmax = td(getkeyval(3, "Vmax")); - aPWR = td(getkeyval(3, "PWR")); - aSandCap = ti(getkeyval(2, "SandCap")); - aHeatingP = td(getkeyval(3, "HeatingP")); - aLightP = td(getkeyval(3, "LightP")); + aCategory = getkeyval(1, "Category"); + aType = ToUpper(getkeyval(1, "Type")); + aMass = atof(getkeyval(3, "M").c_str()); + aMred = atof(getkeyval(3, "Mred").c_str()); + aVmax = atof(getkeyval(3, "Vmax").c_str()); + aPWR = atof(getkeyval(3, "PWR").c_str()); + aSandCap = atoi(getkeyval(2, "SandCap").c_str()); + aHeatingP = atof(getkeyval(3, "HeatingP").c_str()); + aLightP = atof(getkeyval(3, "LightP").c_str()); } if (issection("Load:")) { secLoad = true; - bMaxLoad = ti(getkeyval(2, "MaxLoad")); - bLoadQ = ts(getkeyval(1, "LoadQ")); - bLoadAccepted = ts(getkeyval(1, "LoadAccepted")); - bLoadSpeed = td(getkeyval(3, "LoadSpeed")); - bUnLoadSpeed = td(getkeyval(3, "UnLoadSpeed")); - bOverLoadFactor = td(getkeyval(3, "OverLoadFactor")); + bMaxLoad = atoi(getkeyval(2, "MaxLoad").c_str()); + bLoadQ = getkeyval(1, "LoadQ"); + bLoadAccepted = getkeyval(1, "LoadAccepted"); + bLoadSpeed = atof(getkeyval(3, "LoadSpeed").c_str()); + bUnLoadSpeed = atof(getkeyval(3, "UnLoadSpeed").c_str()); + bOverLoadFactor = atof(getkeyval(3, "OverLoadFactor").c_str()); } if (issection("Dimensions:")) { secDimensions = true; SetFlag(OKFlag, dimensions_ok); - cL = td(getkeyval(3, "L")); - cH = td(getkeyval(3, "H")); - cW = td(getkeyval(3, "W")); - cCx = td(getkeyval(3, "Cx")); - cFloor = td(getkeyval(3, "Floor")); + cL = atof(getkeyval(3, "L").c_str()); + cH = atof(getkeyval(3, "H").c_str()); + cW = atof(getkeyval(3, "W").c_str()); + cCx = atof(getkeyval(3, "Cx").c_str()); + cFloor = atof(getkeyval(3, "Floor").c_str()); } if (issection("Wheels:")) { secWheels = true; - dD = td(getkeyval(3, "D")); - dDl = td(getkeyval(3, "Dl")); - dDt = td(getkeyval(3, "Dt")); - dAIM = td(getkeyval(3, "AIM")); - dTw = td(getkeyval(3, "Tw")); - dAxle = ts(getkeyval(1, "Axle")); - dAd = td(getkeyval(3, "Ad")); - dBd = td(getkeyval(3, "Bd")); - dRmin = td(getkeyval(3, "Rmin")); - dBearingType = ts(getkeyval(1, "BearingType")); + dD = atof(getkeyval(3, "D").c_str()); + dDl = atof(getkeyval(3, "Dl").c_str()); + dDt = atof(getkeyval(3, "Dt").c_str()); + dAIM = atof(getkeyval(3, "AIM").c_str()); + dTw = atof(getkeyval(3, "Tw").c_str()); + dAxle = getkeyval(1, "Axle"); + dAd = atof(getkeyval(3, "Ad").c_str()); + dBd = atof(getkeyval(3, "Bd").c_str()); + dRmin = atof(getkeyval(3, "Rmin").c_str()); + dBearingType = getkeyval(1, "BearingType"); } if (issection("Brake:")) { secBrake = true; - eBrakeValve = ts(getkeyval(1, "BrakeValve")); - eNBpA = ti(getkeyval(2, "NBpA")); - eMBF = td(getkeyval(3, "MBF")); - eTBF = td(getkeyval(3, "TBF")); - eSize = ti(getkeyval(3, "Size")); - eMaxBP = td(getkeyval(3, "MaxBP")); - eMedMaxBP = td(getkeyval(3, "MedMaxBP")); - eTareMaxBP = td(getkeyval(3, "TareMaxBP")); - eMaxLBP = td(getkeyval(3, "MaxLBP")); - eMaxASBP = td(getkeyval(3, "MaxASBP")); - eRM = td(getkeyval(3, "RM")); - eBCN = ti(getkeyval(2, "BCN")); - eBCR = td(getkeyval(3, "BCR")); - eBCD = td(getkeyval(3, "BCD")); - eBCM = td(getkeyval(3, "BCM")); - eBCMlo = td(getkeyval(3, "BCMlo")); - eBCMhi = td(getkeyval(3, "BCMhi")); - eVv = td(getkeyval(3, "Vv")); - eMinCP = td(getkeyval(3, "MinCP")); - eMaxCP = td(getkeyval(3, "MaxCP")); - eBCS = td(getkeyval(3, "BCS")); - eBSA = td(getkeyval(3, "BSA")); - eBM = ts(getkeyval(1, "BM")); - eBVV = ti(getkeyval(2, "BVV")); - eBRE = td(getkeyval(3, "BRE")); - eHiPP = td(getkeyval(3, "HiPP")); - eLoPP = td(getkeyval(3, "LoPP")); - eCompressorSpeed = td(getkeyval(3, "CompressorSpeed")); - eCompressorPower = ts(getkeyval(1, "CompressorPower")); + eBrakeValve = getkeyval(1, "BrakeValve"); + eNBpA = atoi(getkeyval(2, "NBpA").c_str()); + eMBF = atof(getkeyval(3, "MBF").c_str()); + eTBF = atof(getkeyval(3, "TBF").c_str()); + eSize = atoi(getkeyval(3, "Size").c_str()); + eMaxBP = atof(getkeyval(3, "MaxBP").c_str()); + eMedMaxBP = atof(getkeyval(3, "MedMaxBP").c_str()); + eTareMaxBP = atof(getkeyval(3, "TareMaxBP").c_str()); + eMaxLBP = atof(getkeyval(3, "MaxLBP").c_str()); + eMaxASBP = atof(getkeyval(3, "MaxASBP").c_str()); + eRM = atof(getkeyval(3, "RM").c_str()); + eBCN = atoi(getkeyval(2, "BCN").c_str()); + eBCR = atof(getkeyval(3, "BCR").c_str()); + eBCD = atof(getkeyval(3, "BCD").c_str()); + eBCM = atof(getkeyval(3, "BCM").c_str()); + eBCMlo = atof(getkeyval(3, "BCMlo").c_str()); + eBCMhi = atof(getkeyval(3, "BCMhi").c_str()); + eVv = atof(getkeyval(3, "Vv").c_str()); + eMinCP = atof(getkeyval(3, "MinCP").c_str()); + eMaxCP = atof(getkeyval(3, "MaxCP").c_str()); + eBCS = atof(getkeyval(3, "BCS").c_str()); + eBSA = atof(getkeyval(3, "BSA").c_str()); + eBM = atof(getkeyval(1, "BM").c_str()); + eBVV = atoi(getkeyval(2, "BVV").c_str()); + eBRE = atof(getkeyval(3, "BRE").c_str()); + eHiPP = atof(getkeyval(3, "HiPP").c_str()); + eLoPP = atof(getkeyval(3, "LoPP").c_str()); + eCompressorSpeed = atof(getkeyval(3, "CompressorSpeed").c_str()); + eCompressorPower = atof(getkeyval(1, "CompressorPower").c_str()); } if (issection("BuffCoupl.") || issection("BuffCoupl1.")) { secBuffCoupl = true; - fCType = ts(getkeyval(1, "CType")); - fkB = td(getkeyval(3, "kB")); - fDmaxB = td(getkeyval(3, "DmaxB")); - fFmaxB = td(getkeyval(3, "FmaxB")); - fkC = td(getkeyval(3, "kC")); - fDmaxC = td(getkeyval(3, "DmaxC")); - fFmaxC = td(getkeyval(3, "FmaxC")); - fbeta = td(getkeyval(3, "beta")); - fAllowedFlag = ti(getkeyval(2, "AllowedFlag")); + fCType = (getkeyval(1, "CType")); + fkB = atof(getkeyval(3, "kB").c_str()); + fDmaxB = atof(getkeyval(3, "DmaxB").c_str()); + fFmaxB = atof(getkeyval(3, "FmaxB").c_str()); + fkC = atof(getkeyval(3, "kC").c_str()); + fDmaxC = atof(getkeyval(3, "DmaxC").c_str()); + fFmaxC = atof(getkeyval(3, "FmaxC").c_str()); + fbeta = atof(getkeyval(3, "beta").c_str()); + fAllowedFlag = atoi(getkeyval(2, "AllowedFlag").c_str()); } if (issection("Cntrl.")) { secCntrl = true; - gBrakeSystem = ts(getkeyval(1, "BrakeSystem")); - gBCPN = ti(getkeyval(2, "BCPN")); - gBDelay1 = ti(getkeyval(2, "BDelay1")); - gBDelay2 = ti(getkeyval(2, "BDelay2")); - gBDelay3 = ti(getkeyval(2, "BDelay3")); - gBDelay4 = ti(getkeyval(2, "BDelay4")); - gASB = ts(getkeyval(1, "ASB")); - gLocalBrake = ts(getkeyval(1, "LocalBrake")); - gDynamicBrake = ts(getkeyval(1, "DynamicBrake")); - // gManualBrake = ts(getkeyval(1, "ManualBrake")); - gFSCircuit = ts(getkeyval(1, "FSCircuit")); - gMCPN = ti(getkeyval(2, "MCPN")); - gSCPN = ti(getkeyval(2, "SCPN")); - gSCIM = ti(getkeyval(2, "SCIM")); - gScndS = ts(getkeyval(1, "ScndS")); - gCoupledCtrl = ts(getkeyval(1, "CoupledCtrl")); - gAutoRelay = ts(getkeyval(1, "AutoRelay")); - gIniCDelay = td(getkeyval(3, "IniCDelay")); - gSCDelay = td(getkeyval(3, "SCDelay")); - gSCDDelay = td(getkeyval(3, "SCDDelay")); - gBrakeDelays = ts(getkeyval(1, "BrakeDelays")); - gBrakeHandle = ts(getkeyval(1, "BrakeHandle")); - gLocBrakeHandle = ts(getkeyval(1, "LocBrakeHandle")); - gMaxBPMass = td(getkeyval(3, "MaxBPMass")); + gBrakeSystem = (getkeyval(1, "BrakeSystem")); + gBCPN = atoi(getkeyval(2, "BCPN").c_str()); + gBDelay1 = atoi(getkeyval(2, "BDelay1").c_str()); + gBDelay2 = atoi(getkeyval(2, "BDelay2").c_str()); + gBDelay3 = atoi(getkeyval(2, "BDelay3").c_str()); + gBDelay4 = atoi(getkeyval(2, "BDelay4").c_str()); + gASB = (getkeyval(1, "ASB")); + gLocalBrake = (getkeyval(1, "LocalBrake")); + gDynamicBrake = (getkeyval(1, "DynamicBrake")); + // gManualBrake = (getkeyval(1, "ManualBrake")); + gFSCircuit = (getkeyval(1, "FSCircuit").c_str()); + gMCPN = atoi(getkeyval(2, "MCPN").c_str()); + gSCPN = atoi(getkeyval(2, "SCPN").c_str()); + gSCIM = atoi(getkeyval(2, "SCIM").c_str()); + gScndS = (getkeyval(1, "ScndS")); + gCoupledCtrl = (getkeyval(1, "CoupledCtrl")); + gAutoRelay = (getkeyval(1, "AutoRelay")); + gIniCDelay = atof(getkeyval(3, "IniCDelay").c_str()); + gSCDelay = atof(getkeyval(3, "SCDelay").c_str()); + gSCDDelay = atof(getkeyval(3, "SCDDelay").c_str()); + gBrakeDelays = (getkeyval(1, "BrakeDelays")); + gBrakeHandle = (getkeyval(1, "BrakeHandle")); + gLocBrakeHandle = (getkeyval(1, "LocBrakeHandle")); + gMaxBPMass = atof(getkeyval(3, "MaxBPMass").c_str()); } if (issection("Security:")) { secSecurity = true; - hAwareSystem = ts(getkeyval(1, "AwareSystem")); - hAwareMinSpeed = td(getkeyval(3, "AwareMinSpeed")); - hAwareDelay = td(getkeyval(3, "AwareDelay")); - hSoundSignalDelay = td(getkeyval(3, "SoundSignalDelay")); - hEmergencyBrakeDelay = td(getkeyval(3, "EmergencyBrakeDelay")); - hRadioStop = ts(getkeyval(1, "RadioStop")); + hAwareSystem = (getkeyval(1, "AwareSystem")); + hAwareMinSpeed = atof(getkeyval(3, "AwareMinSpeed").c_str()); + hAwareDelay = atof(getkeyval(3, "AwareDelay").c_str()); + hSoundSignalDelay = atof(getkeyval(3, "SoundSignalDelay").c_str()); + hEmergencyBrakeDelay = atof(getkeyval(3, "EmergencyBrakeDelay").c_str()); + hRadioStop = (getkeyval(1, "RadioStop")); } if (issection("Light:")) { secLight = true; - iLight = ts(getkeyval(1, "Light")); - iLGeneratorEngine = ts(getkeyval(1, "LGeneratorEngine")); - iLMaxVoltage = td(getkeyval(3, "LMaxVoltage")); - iLMaxCurrent = td(getkeyval(3, "LMaxCurrent")); + iLight = (getkeyval(1, "Light")); + iLGeneratorEngine = (getkeyval(1, "LGeneratorEngine")); + iLMaxVoltage = atof(getkeyval(3, "LMaxVoltage").c_str()); + iLMaxCurrent = atof(getkeyval(3, "LMaxCurrent").c_str()); } if (issection("Power:")) { secPower = true; - jEnginePower = ts(getkeyval(1, "EnginePower")); - jSystemPower = ts(getkeyval(1, "SystemPower")); - jCollectorsNo = ti(getkeyval(2, "CollectorsNo")); - jMaxVoltage = td(getkeyval(3, "MaxVoltage")); - jMaxCurrent = td(getkeyval(3, "MaxCurrent")); - jIntR = td(getkeyval(3, "IntR")); - jMinH = td(getkeyval(3, "MinH")); - jMaxH = td(getkeyval(3, "MaxH")); - jCSW = td(getkeyval(3, "CSW")); - jMinV = td(getkeyval(3, "MinV")); - jMinPress = td(getkeyval(3, "MinPress")); - jMaxPress = td(getkeyval(3, "MaxPress")); + jEnginePower = (getkeyval(1, "EnginePower")); + jSystemPower = (getkeyval(1, "SystemPower")); + jCollectorsNo = atoi(getkeyval(2, "CollectorsNo").c_str()); + jMaxVoltage = atof(getkeyval(3, "MaxVoltage").c_str()); + jMaxCurrent = atof(getkeyval(3, "MaxCurrent").c_str()); + jIntR = atof(getkeyval(3, "IntR").c_str()); + jMinH = atof(getkeyval(3, "MinH").c_str()); + jMaxH = atof(getkeyval(3, "MaxH").c_str()); + jCSW = atof(getkeyval(3, "CSW").c_str()); + jMinV = atof(getkeyval(3, "MinV").c_str()); + jMinPress = atof(getkeyval(3, "MinPress").c_str()); + jMaxPress = atof(getkeyval(3, "MaxPress").c_str()); } if (issection("Engine:")) { secEngine = true; - kEngineType = ts(getkeyval(1, "EngineType")); - kTrans = ts(getkeyval(1, "Trans")); - kVolt = td(getkeyval(3, "Volt")); - kWindingRes = td(getkeyval(3, "WindingRes")); - knmax = td(getkeyval(3, "nmax")); + kEngineType = (getkeyval(1, "EngineType")); + kTrans = (getkeyval(1, "Trans")); + kVolt = atof(getkeyval(3, "Volt").c_str()); + kWindingRes = atof(getkeyval(3, "WindingRes").c_str()); + knmax = atof(getkeyval(3, "nmax").c_str()); } if (issection("Circuit:")) { secCircuit = true; - lCircuitRes = td(getkeyval(3, "CircuitRes")); - lImaxLo = ti(getkeyval(2, "ImaxLo")); - lImaxHi = ti(getkeyval(2, "ImaxHi")); - lIminLo = ti(getkeyval(2, "IminLo")); - lIminHi = ti(getkeyval(2, "IminHi")); + lCircuitRes = atof(getkeyval(3, "CircuitRes").c_str()); + lImaxLo = atoi(getkeyval(2, "ImaxLo").c_str()); + lImaxHi = atoi(getkeyval(2, "ImaxHi").c_str()); + lIminLo = atoi(getkeyval(2, "IminLo").c_str()); + lIminHi = atoi(getkeyval(2, "IminHi").c_str()); } if (issection("RList:")) { secRList = true; - mSize = ti(getkeyval(2, "Size")); - mRVent = ts(getkeyval(1, "RVent")); - mRVentnmax = td(getkeyval(3, "RVentnmax")); - mRVentCutOff = td(getkeyval(3, "RVentCutOff")); + mSize = atoi(getkeyval(2, "Size").c_str()); + mRVent = (getkeyval(1, "RVent")); + mRVentnmax = atof(getkeyval(3, "RVentnmax").c_str()); + mRVentCutOff = atof(getkeyval(3, "RVentCutOff").c_str()); } if (issection("DList:")) { secDList = true; - nMmax = td(getkeyval(3, "Mmax")); - nnMmax = td(getkeyval(3, "nMmax")); - nMnmax = td(getkeyval(3, "Mnmax")); - nnmax = td(getkeyval(3, "nmax")); - nnominalfill = td(getkeyval(3, "nominalfill")); - nMstand = td(getkeyval(3, "Mstand")); - nSize = ti(getkeyval(2, "Size")); + nMmax = atof(getkeyval(3, "Mmax").c_str()); + nnMmax = atof(getkeyval(3, "nMmax").c_str()); + nMnmax = atof(getkeyval(3, "Mnmax").c_str()); + nnmax = atof(getkeyval(3, "nmax").c_str()); + nnominalfill = atof(getkeyval(3, "nominalfill").c_str()); + nMstand = atof(getkeyval(3, "Mstand").c_str()); + nSize = atoi(getkeyval(2, "Size").c_str()); } if (issection("WWList:")) @@ -6185,7 +6227,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) else if (aCategory == "unimog") CategoryFlag = 3; else - ConversionError = MARKERROR(-7, 1, "Improper vechicle category"); + ConversionError = MARKERROR(-7, "1", "Improper vechicle category"); Mass = aMass; Mred = aMred; @@ -6274,7 +6316,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) AxleInertialMoment = 1; if (NAxles == 0) - ConversionError = MARKERROR(-1, 1, "0 axles, hover cat?"); + ConversionError = MARKERROR(-1, "1", "0 axles, hover cat?"); if (dBearingType == "Roll") BearingType = 1; @@ -6368,7 +6410,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) RapidMult = 1; } else - ConversionError = MARKERROR(-5, 1, "0 brake cylinder units"); + ConversionError = MARKERROR(-5, "1", "0 brake cylinder units"); } else P2FTrans = 0; @@ -6379,7 +6421,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) CntrlPipePress = eHiPP; else CntrlPipePress = - 5 + 0.001 * (random(10) - random(10)); // Ra 2014-07: trochê niedok³adnoœci + 5 + 0.001 * (Random(10) - Random(10)); // Ra 2014-07: trochê niedok³adnoœci HighPipePress = CntrlPipePress; if (eHiPP != 0) @@ -6705,13 +6747,13 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) { NominalVoltage = kVolt; - x = split(kTrans.c_str(), ':'); // 18:79 + x = Split(kTrans, ':'); // 18:79 - p0 = Trim(x[0].c_str()); - p1 = Trim(x[1].c_str()); + p0 = TrimSpace(x[0]); + p1 = TrimSpace(x[1]); - Transmision.NToothW = s2b(p1); - Transmision.NToothM = s2b(p0); + Transmision.NToothW = atoi(p1.c_str()); + Transmision.NToothM = atoi(p0.c_str()); // ToothW to drugi parametr czyli 79 // ToothM to pierwszy czyli 18 @@ -6745,19 +6787,19 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) if (secCircuit) { // s := DUE(ExtractKeyWord(lines, 'CircuitRes=')); writepaslog('CircuitRes', s); - CircuitRes = s2r(lCircuitRes); + CircuitRes = (lCircuitRes); // s := DUE(ExtractKeyWord(lines, 'IminLo=')); writepaslog('IminLo', s); - IminLo = s2iE(lIminLo); + IminLo = (lIminLo); // s := DUE(ExtractKeyWord(lines, 'IminHi=')); writepaslog('IminHi', s); - IminHi = s2i(lIminHi); + IminHi = (lIminHi); // s := DUE(ExtractKeyWord(lines, 'ImaxLo=')); writepaslog('ImaxLo', s); - ImaxLo = s2iE(lImaxLo); + ImaxLo = (lImaxLo); // s := DUE(ExtractKeyWord(lines, 'ImaxHi=')); writepaslog('ImaxHi', s); - ImaxHi = s2i(lImaxHi); + ImaxHi = (lImaxHi); Imin = IminLo; Imax = ImaxLo; } @@ -6767,7 +6809,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) if (secRList) { - RlistSize = s2b(mSize); + RlistSize = (mSize); if (mRVent == "Automatic") RVentType = 2; @@ -6778,9 +6820,9 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) if (RVentType > 0) { - RVentnmax = s2rE(mRVentnmax) / 60.0; + RVentnmax = (mRVentnmax) / 60.0; - RVentCutOff = s2r(mRVentCutOff); + RVentCutOff = (mRVentCutOff); } } @@ -6791,9 +6833,9 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) // WriteLog(""); // WriteLog("----------------------------------------------------------------------------------------"); - WriteLog("CERROR: " + IntToStr(ConversionError) + ", SUCCES: " + AS(BoolToYN(OK))); + WriteLog("CERROR: " + to_string(ConversionError) + ", SUCCES: " + to_string(OK)); // WriteLogSS(); - WriteLog(""); + //WriteLog(""); return OK; } // LoadFIZ() @@ -6940,7 +6982,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir) Handle = new TSt113(); break; default: - Handle = new TBHandle(); + Handle = new TDriverHandle(); } switch (BrakeLocHandle) @@ -6958,7 +7000,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir) break; } default: - LocHandle = new TBHandle(); + LocHandle = new TDriverHandle(); } // ustalanie srednicy przewodu glownego (lokomotywa lub napêdowy @@ -7070,7 +7112,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir) // Hamulec->Init(PipePress, HighPipePress, LowPipePress, BrakePress, BrakeDelayFlag); // ScndPipePress = Compressor; - WriteLogSS("OK=", BoolTo10(OK)); + WriteLog("OK=" + to_string(OK)); return OK; } @@ -7228,7 +7270,7 @@ bool TMoverParameters::CreateBrakeSys() Handle = new TSt113(); break; default: - Handle = new TBHandle(); + Handle = new TDriverHandle(); } switch (BrakeLocHandle) @@ -7246,7 +7288,7 @@ bool TMoverParameters::CreateBrakeSys() break; } default: - LocHandle = new TBHandle(); + LocHandle = new TDriverHandle(); } Pipe = new TReservoir(); @@ -7336,7 +7378,7 @@ bool TMoverParameters::CreateBrakeSys() ScndPipePress = Compressor; // WriteLogSS("OK=", BoolTo10(OK)); - WriteLog(""); + //WriteLog(""); return OK; } diff --git a/McZapkie/Oerlikon_ESt.cpp b/McZapkie/Oerlikon_ESt.cpp index 3dc737bd..3341c1a9 100644 --- a/McZapkie/Oerlikon_ESt.cpp +++ b/McZapkie/Oerlikon_ESt.cpp @@ -330,7 +330,7 @@ void TNESt3::Init(double PP, double HPP, double LPP, double BP, unsigned char BD CntrlRes = new TReservoir(); CntrlRes->CreateCap(15); CntrlRes->CreatePress(1 * HPP); - BrakeStatus = Byte(BP > 1) * 1; + BrakeStatus = int(BP > 1) * 1; Miedzypoj = new TReservoir(); Miedzypoj->CreateCap(5); Miedzypoj->CreatePress(PP); @@ -457,7 +457,7 @@ void TNESt3::PLC(double mass) { LoadC = 1 + - Byte(mass < LoadM) * + double(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) * 1.0 / (LoadM - TareM)) * 1.0 / MaxBP - 1); } diff --git a/McZapkie/Oerlikon_ESt.h b/McZapkie/Oerlikon_ESt.h index b0187d7f..c27b2200 100644 --- a/McZapkie/Oerlikon_ESt.h +++ b/McZapkie/Oerlikon_ESt.h @@ -185,6 +185,9 @@ class TNESt3 : public TBrake double LBP; // cisnienie hamulca pomocniczego public: + inline TNESt3(double i_mbp, double i_bcr, double i_bcd, double i_brc, + int i_bcn, int i_BD, int i_mat, int i_ba, int i_nbpa) : TBrake(i_mbp, i_bcr, i_bcd, i_brc, i_bcn + , i_BD, i_mat, i_ba, i_nbpa) { } virtual double GetPF(double PP, double dt, double Vel) /*override*/; // przeplyw miedzy komora wstepna i PG void EStParams(double i_crc); // parametry charakterystyczne dla ESt diff --git a/McZapkie/friction.~hpp b/McZapkie/friction.~hpp deleted file mode 100644 index e64aa811..00000000 --- a/McZapkie/friction.~hpp +++ /dev/null @@ -1,232 +0,0 @@ -// Borland C++ Builder -// Copyright (c) 1995, 1999 by Borland International -// All rights reserved - -// (DO NOT EDIT: machine generated header) 'friction.pas' rev: 5.00 - -#ifndef frictionHPP -#define frictionHPP - -#pragma delphiheader begin -#pragma option push -w- -#pragma option push -Vx -#include // Pascal unit -#include // Pascal unit -#include // Pascal unit -#include // Pascal unit - -//-- user supplied ----------------------------------------------------------- - -namespace Physics -{ -//-- type declarations ------------------------------------------------------- -class DELPHICLASS TFricMat; -class PASCALIMPLEMENTATION TFricMat : public System::TObject -{ - typedef System::TObject inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TFricMat(void) : System::TObject() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TFricMat(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TP10Bg; -class PASCALIMPLEMENTATION TP10Bg : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TP10Bg(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TP10Bg(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TP10Bgu; -class PASCALIMPLEMENTATION TP10Bgu : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TP10Bgu(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TP10Bgu(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TP10yBg; -class PASCALIMPLEMENTATION TP10yBg : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TP10yBg(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TP10yBg(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TP10yBgu; -class PASCALIMPLEMENTATION TP10yBgu : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TP10yBgu(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TP10yBgu(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TP10; -class PASCALIMPLEMENTATION TP10 : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TP10(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TP10(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TFR513; -class PASCALIMPLEMENTATION TFR513 : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TFR513(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TFR513(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TFR510; -class PASCALIMPLEMENTATION TFR510 : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TFR510(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TFR510(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TCosid; -class PASCALIMPLEMENTATION TCosid : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TCosid(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TCosid(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TDisk1; -class PASCALIMPLEMENTATION TDisk1 : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TDisk1(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TDisk1(void) { } - #pragma option pop - -}; - - -class DELPHICLASS TDisk2; -class PASCALIMPLEMENTATION TDisk2 : public TFricMat -{ - typedef TFricMat inherited; - -public: - virtual double __fastcall GetFC(double N, double Vel); -public: - #pragma option push -w-inl - /* TObject.Create */ inline __fastcall TDisk2(void) : TFricMat() { } - #pragma option pop - #pragma option push -w-inl - /* TObject.Destroy */ inline __fastcall virtual ~TDisk2(void) { } - #pragma option pop - -}; - - -//-- var, const, procedure --------------------------------------------------- - -} /* namespace Friction */ -#if !defined(NO_IMPLICIT_NAMESPACE_USE) -using namespace Friction; -#endif -#pragma option pop // -w- -#pragma option pop // -Vx - -#pragma delphiheader end. -//-- end unit ---------------------------------------------------------------- -#endif // friction diff --git a/McZapkie/hamulce.cpp b/McZapkie/hamulce.cpp index 79924d98..87d57928 100644 --- a/McZapkie/hamulce.cpp +++ b/McZapkie/hamulce.cpp @@ -20,6 +20,18 @@ Copyright (C) 2007-2014 Maciej Cierniak //---FUNKCJE OGOLNE--- static double const DPL = 0.25; +double TFV4aM::pos_table[11] = { 0, 8, 1, 2, 0, 3, 6, 8, 2, 2, 2 }; +double TMHZ_EN57::pos_table[11] = { 0, 12, 1, 2, 2, 4, 11, 12, 2, 2, 2 }; +double TM394::pos_table[11] = { 0, 6, 0, 1, 2, 3, 5, 6, 1, 1, 1 }; +double TH14K1::BPT_K[6][2] = +{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; +double TH14K1::pos_table[11] = { 0, 5, 0, 1, 2, 3, 4, 5, 1, 1, 1 }; +double TSt113::BPT_K[6][2] = +{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; +double TSt113::BEP_K[7] = { 0, -1, 1, 0, 0, 0, 0 }; +double TSt113::pos_table[11] = { 0, 6, 0, 1, 3, 4, 5, 6, 1, 1, 2 }; +double TFVel6::pos_table[11] = { -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 }; + double PR(double P1, double P2) { @@ -40,7 +52,7 @@ double PF_old(double P1, double P2, double S) return (PH + 1) * 222 * S * (P2 - P1) * 1.0 / (1.13 * PH - PL); } -double PF(double P1, double P2, double S, double DP = 0.25) +double PF(double P1, double P2, double S, double DP) { double PH = Max0R(P1, P2) + 1; // wyzsze cisnienie absolutne double PL = P1 + P2 - PH + 2; // nizsze cisnienie absolutne @@ -79,7 +91,7 @@ long lround(double value) } double PFVa(double PH, double PL, double S, double LIM, - double DP = 0.1) // zawor napelniajacy z PH do PL, PL do LIM + double DP) // zawor napelniajacy z PH do PL, PL do LIM { if (LIM > PL) { @@ -104,7 +116,7 @@ double PFVa(double PH, double PL, double S, double LIM, } double PFVd(double PH, double PL, double S, double LIM, - double DP = 0.1) // zawor wypuszczajacy z PH do PL, PH do LIM + double DP) // zawor wypuszczajacy z PH do PL, PH do LIM { if (LIM < PH) { @@ -2347,9 +2359,7 @@ double TFV4aM::GetSound(int i) double TFV4aM::GetPos(int i) { - static double const table[11] = { -2, 6, -1, 0, -2, 1, 4, 6, 0, 0, 0 }; - - return table[i]; + return pos_table[i]; } double TFV4aM::LPP_RP(double pos) // cisnienie z zaokraglonej pozycji; @@ -2481,9 +2491,7 @@ double TMHZ_EN57::GetSound(int i) double TMHZ_EN57::GetPos(int i) { - static double const table[11] = { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; - - return table[i]; + return pos_table[i]; } double TMHZ_EN57::GetCP() @@ -2585,9 +2593,7 @@ double TM394::GetCP() double TM394::GetPos(int i) { - static double const table[11] = { -1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0 }; - - return table[i]; + return pos_table[i]; } //---H14K1-- Knorr @@ -2595,8 +2601,8 @@ double TM394::GetPos(int i) double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep) { static int const LBDelay = 100; // szybkosc + zasilanie sterujacego - static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] = - { (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; + // static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] = + //{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; static double const NomPress = 5.0; double LimPP; @@ -2653,9 +2659,7 @@ double TH14K1::GetCP() double TH14K1::GetPos(int i) { - static double const table[11] = { -1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0 }; - - return table[i]; + return pos_table[i]; } //---St113-- Knorr EP @@ -2663,9 +2667,6 @@ double TH14K1::GetPos(int i) double TSt113::GetPF(double i_bcp, double PP, double HP, double dt, double ep) { static int const LBDelay = 100; // szybkosc + zasilanie sterujacego - static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] = - { (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; - static double const BEP_K[/*?*/ /*-1..5*/ (5) - (-1) + 1] = { 0, -1, 1, 0, 0, 0, 0 }; static double const NomPress = 5.0; double LimPP; @@ -2715,9 +2716,7 @@ double TSt113::GetCP() double TSt113::GetPos(int i) { - static double const table[11] = { -1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1 }; - - return table[i]; + return pos_table[i]; } void TSt113::Init(double Press) @@ -2890,9 +2889,7 @@ double TFVel6::GetCP() double TFVel6::GetPos(int i) { - static double const table[11] = { -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 }; - - return table[i]; + return pos_table[i]; } double TFVel6::GetSound(int i) diff --git a/McZapkie/hamulce.h b/McZapkie/hamulce.h index 87953e20..152e284a 100644 --- a/McZapkie/hamulce.h +++ b/McZapkie/hamulce.h @@ -129,10 +129,10 @@ Knorr/West EP - //7//1.5 // BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (14, 5.4), (9, 5.0), (6, 4.6), (9, 4.5), (9, 4.0), (9, 3.5), (9, 2.8), (34, 2.8)); // BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (7, 5.0), (2.0, 5.0), (4.5, 4.6), (4.5, 4.2), (4.5, 3.8), (4.5, 3.4), (4.5, 2.8), (8, 2.8)); - static double zero_based_BPT[ /*?*//*-2..6*/ (6) - (-2) + 1][2] = { (0 , 5.0) , (7 , 5.0) , (2.0 , 5.0) , (4.5 , 4.6) , (4.5 , 4.2) , (4.5 , 3.8) , (4.5 , 3.4) , (4.5 , 2.8) , (8 , 2.8) }; - static double zero_based_BPT_394[ /*?*//*-1..5*/ (5) - (-1) + 1][2] = { (13 , 10.0) , (5 , 5.0) , (0 , -1) , (5 , -1) , (5 , 0.0) , (5 , 0.0) , (18 , 0.0) }; - double *BPT = zero_based_BPT[2]; //tablica pozycji hamulca dla zakresu -2..6 - double *BPT_394 = zero_based_BPT_394[1]; //tablica pozycji hamulca dla zakresu -1..5 + static double BPT[ /*?*//*-2..6*/ (6) - (-2) + 1][2] = { (0 , 5.0) , (7 , 5.0) , (2.0 , 5.0) , (4.5 , 4.6) , (4.5 , 4.2) , (4.5 , 3.8) , (4.5 , 3.4) , (4.5 , 2.8) , (8 , 2.8) }; + static double BPT_394[ /*?*//*-1..5*/ (5) - (-1) + 1][2] = { (13 , 10.0) , (5 , 5.0) , (0 , -1) , (5 , -1) , (5 , 0.0) , (5 , 0.0) , (18 , 0.0) }; + //double *BPT = zero_based_BPT[2]; //tablica pozycji hamulca dla zakresu -2..6 + //double *BPT_394 = zero_based_BPT_394[1]; //tablica pozycji hamulca dla zakresu -1..5 // BPT: array[-2..6] of array [0..1] of real= ((0, 5.0), (12, 5.4), (9, 5.0), (9, 4.6), (9, 4.2), (9, 3.8), (9, 3.4), (9, 2.8), (34, 2.8)); // BPT: array[-2..6] of array [0..1] of real= ((0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0),(0, 0)); static int const i_bcpno = 6; @@ -559,6 +559,8 @@ Knorr/West EP - double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem) // Sounds: array[0..4] of real; //wielkosci przeplywow dla dzwiekow bool Fala; + // const double pos_table[11] = { -2, 6, -1, 0, -2, 1, 4, 6, 0, 0, 0 }; + static double pos_table[11]; double LPP_RP(double pos); bool EQ(double pos, double i_pos); public: @@ -580,6 +582,8 @@ Knorr/West EP - double CP; double TP; double RP; //zbiornik steruj¹cy, czasowy, redukcyjny double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem) bool Fala; + // const double pos_table[11] = { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; + static double pos_table[11]; //= { 0, 12, 1, 2, 2, 4, 11, 12, 2, 2, 2 }; double LPP_RP(double pos); bool EQ(double pos, double i_pos); @@ -634,6 +638,8 @@ Knorr/West EP - private: double CP; //zbiornik steruj¹cy, czasowy, redukcyjny double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem) +// double const pos_table[11] = { -1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0 }; + static double pos_table[11]; // = { 0, 6, 0, 1, 2, 3, 5, 6, 1, 1, 1 }; public: double GetPF(double i_bcp, double PP, double HP, double dt, double ep)/*override*/; @@ -650,6 +656,10 @@ Knorr/West EP - class TH14K1 : public TDriverHandle { + private: + double static BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2]; +// double const table[11] = { -1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0 }; + double static pos_table[11]; // = { 0, 5, 0, 1, 2, 3, 4, 5, 1, 1, 1 }; protected: double CP; //zbiornik steruj¹cy, czasowy, redukcyjny double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem) @@ -671,6 +681,10 @@ Knorr/West EP - { private: double EPS; + double static BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2]; + double static BEP_K[/*?*/ /*-1..5*/ (5) - (-1) + 1]; +// double const pos_table[11] = { -1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1 }; + double static pos_table[11]; // = { 0, 6, 0, 1, 3, 4, 5, 6, 1, 1, 2 }; public: double GetPF(double i_bcp, double PP, double HP, double dt, double ep)/*override*/; @@ -742,6 +756,8 @@ Knorr/West EP - { private: double EPS; +// double const table[11] = { -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 }; + double static pos_table[11]; // = { -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 }; public: double GetPF(double i_bcp, double PP, double HP, double dt, double ep)/*override*/; diff --git a/McZapkie/mctools.cpp b/McZapkie/mctools.cpp index c745f857..a8ca04a6 100644 --- a/McZapkie/mctools.cpp +++ b/McZapkie/mctools.cpp @@ -14,6 +14,10 @@ Copyright (C) 2007-2014 Maciej Cierniak #include "mctools.h" #include #include +#include +#include +#include +#include using namespace std; /*================================================*/ @@ -139,7 +143,7 @@ std::string ReadWord(std::ifstream& infile) return s; } -std::string Cut_Space(std::string s, int Just) +std::string TrimSpace(std::string s, int Just) { int ii; @@ -148,26 +152,45 @@ std::string Cut_Space(std::string s, int Just) case CutLeft: { ii = 0; - while ((ii < s.length()) && (s[ii + 1] == _SPACE)) + while ((ii < s.length()) && (s[ii + 1] == (char)" ")) ++ii; s = s.substr(ii + 1, s.length() - ii); } case CutRight: { ii = s.length(); - while ((ii > 0) && (s[ii] == _SPACE)) + while ((ii > 0) && (s[ii] == (char)" ")) --ii; s = s.substr(0, ii); } case CutBoth: { - s = Cut_Space(s, CutLeft); - s = Cut_Space(s, CutRight); + s = TrimSpace(s, CutLeft); + s = TrimSpace(s, CutRight); } } return s; } -/*Cut_Space*/ + +char* TrimAndReduceSpaces(const char* s) +{ // redukuje spacje pomiedzy znakami do jednej + char* tmp; + if (s) + { + + strcpy(tmp, s); + char* from = tmp + strspn(tmp, " "); + char* to = tmp; + + do if ((*to = *from++) == ' ') + from += strspn(from, " "); + while (*to++); + + while (*--to == ' ') + *to = '\0'; + } + return tmp; +} std::string ExtractKeyWord(std::string InS, std::string KeyWord) { @@ -186,13 +209,13 @@ std::string ExtractKeyWord(std::string InS, std::string KeyWord) return s; } -std::string DUE(std::string s) /*Delete Until Equal sign*/ +std::string DUE(std::string s) /*Delete Before Equal sign*/ { //DUE = Copy(s, Pos("=", s) + 1, length(s)); return s.substr(s.find("=") + 1, s.length()); } -std::string DWE(std::string s) /*Delete While Equal sign*/ +std::string DWE(std::string s) /*Delete After Equal sign*/ { size_t ep = s.find("="); if (ep != string::npos) @@ -237,6 +260,141 @@ std::string Tab2Sp(std::string s) /*Tab to Space sign*/ //return s2; } +std::string ExchangeCharInString(string s, const char &aim, const char &target) +{ + char *tmp = new char[s.length()]; + for (int b = 0; b < s.length(); ++b) + { + if (s[b] == aim) + if (target == (char)"") + b++; + else + tmp[b] = target; + else + tmp[b] = s[b]; + } + return string(tmp); +} + +std::vector &Split(const std::string &s, char delim, std::vector &elems) +{ // dzieli tekst na wektor tekstow + std::stringstream ss(s); + std::string item; + while (std::getline(ss, item, delim)) + { + elems.push_back(item); + } + return elems; +} + +std::vector Split(const std::string &s, char delim) +{ // dzieli tekst na wektor tekstow + std::vector elems; + Split(s, delim, elems); + return elems; +} + +std::string to_string(int _Val) +{ + std::ostringstream o; + o << _Val; + return o.str(); +}; + +std::string to_string(unsigned int _Val) +{ + std::ostringstream o; + o << _Val; + return o.str(); +}; + +std::string to_string(double _Val) +{ + std::ostringstream o; + o << _Val; + return o.str(); +}; + +std::string to_string(int _Val, int precision) +{ + std::ostringstream o; + o << std::fixed << std::setprecision(precision); + o << _Val; + return o.str(); +}; + +std::string to_string(double _Val, int precision) +{ + std::ostringstream o; + o << std::fixed << std::setprecision(precision); + o << _Val; + return o.str(); +}; + +std::string to_string(int _Val, int precision, int width) +{ + std::ostringstream o; + o.width(width); + o << std::fixed << std::setprecision(precision); + o << _Val; + return o.str(); +}; + +std::string to_string(double _Val, int precision, int width) +{ + std::ostringstream o; + o.width(width); + o << std::fixed << std::setprecision(precision); + o << _Val; + return o.str(); +}; + +std::string to_hex_str(double _Val, int precision, int width) +{ + std::ostringstream o; + if (width) + o.width(width); + o << std::fixed << std::hex; + if (precision) + o << std::setprecision(precision); + o << _Val; + return o.str(); +}; + +int stol_def(const std::string &str, const int &DefaultValue) +{ + // this function was developed iteratively on Codereview.stackexchange + // with the assistance of @Corbin + std::size_t len = str.size(); + while (std::isspace(str[len - 1])) + len--; + if (len == 0) + return DefaultValue; + errno = 0; + char *s = new char[len + 1]; + std::strncpy(s, str.c_str(), len); + char *p; + int result = strtol(s, &p, 0); + if ((*p != '\0') || (errno != 0)) + { + return DefaultValue; + } + delete s; + return result; +} + +std::string ToLower(std::string text) +{ + std::transform(text.begin(), text.end(), text.begin(), ::tolower); + return text; +} + +std::string ToUpper(std::string text) +{ + std::transform(text.begin(), text.end(), text.begin(), ::toupper); + return text; +} + void ComputeArc(double X0, double Y0, double Xn, double Yn, double R, double L, double dL, double &phi, double &Xout, double &Yout) /*wylicza polozenie Xout Yout i orientacje phi punktu na elemencie dL luku*/ diff --git a/McZapkie/mctools.h b/McZapkie/mctools.h index 3b2b1a43..b54f0cf6 100644 --- a/McZapkie/mctools.h +++ b/McZapkie/mctools.h @@ -19,6 +19,8 @@ http://mozilla.org/MPL/2.0/. #include #include #include +#include +#include using namespace std; @@ -35,18 +37,18 @@ static char _EOL[2] = { (char)13, (char)10 }; //static char const _SPACE = " "; static char _Spacesigns[4] = { (char)" ",(char)9, (char)13, (char)10}; static string _spacesigns = " " + (char)9 + (char)13 + (char)10; - static int const CutLeft = -1; - static int const CutRight = 1; - static int const CutBoth = 0; /*Cut_Space*/ - static double const pi = 3.141592653589793; +static int const CutLeft = -1; +static int const CutRight = 1; +static int const CutBoth = 0; /*Cut_Space*/ +static double const pi = 3.141592653589793; - int ConversionError = 0; - int LineCount = 0; - bool DebugModeFlag = false; - bool FreeFlyModeFlag = false; +int ConversionError = 0; +int LineCount = 0; +bool DebugModeFlag = false; +bool FreeFlyModeFlag = false; - typedef unsigned long/*?*//*set of: char */ TableChar; /*MCTUTIL*/ +typedef unsigned long/*?*//*set of: char */ TableChar; /*MCTUTIL*/ /*konwersje*/ @@ -70,12 +72,17 @@ inline int Random() return rand(); } -inline float random(float a, float b) +inline double Random(double a, double b) { srand(time(NULL)); return a + rand() / (float)RAND_MAX * (b - a); } +inline double Random(double b) +{ + return Random(0.0, b); +} + inline double BorlandTime() { std::tm epoch; @@ -91,9 +98,9 @@ inline double BorlandTime() } /*funkcje logiczne*/ -bool TestFlag(int Flag, int Value); -bool SetFlag( int & Flag, int Value); -bool iSetFlag( int & Flag, int Value); +extern bool TestFlag(int Flag, int Value); +extern bool SetFlag( int & Flag, int Value); +extern bool iSetFlag( int & Flag, int Value); bool FuzzyLogic(double Test, double Threshold, double Probability); /*jesli Test>Threshold to losowanie*/ @@ -103,19 +110,41 @@ bool FuzzyLogicAI(double Test, double Threshold, double Probability); /*operacje na stringach*/ std::string ReadWord( std::ifstream& infile); /*czyta slowo z wiersza pliku tekstowego*/ //std::string Ups(std::string s); -std::string Cut_Space(std::string s, int Just); +std::string TrimSpace(std::string s, int Just = CutBoth); +char* TrimAndReduceSpaces(const char* s); std::string ExtractKeyWord(std::string InS, std::string KeyWord); /*wyciaga slowo kluczowe i lancuch do pierwszej spacji*/ std::string DUE(std::string s); /*Delete Until Equal sign*/ std::string DWE(std::string s); /*Delete While Equal sign*/ std::string Ld2Sp(std::string s); /*Low dash to Space sign*/ std::string Tab2Sp(std::string s); /*Tab to Space sign*/ +std::string ExchangeCharInString(string s, const char &aim, const char &target); // zamienia jeden znak na drugi +std::vector &Split(const std::string &s, char delim, std::vector &elems); +std::vector Split(const std::string &s, char delim); + +std::string to_string(int _Val); +std::string to_string(unsigned int _Val); +std::string to_string(int _Val, int precision); +std::string to_string(int _Val, int precision, int width); +std::string to_string(double _Val); +std::string to_string(double _Val, int precision); +std::string to_string(double _Val, int precision, int width); +std::string to_hex_str(double _Val, int precision = 0, int width = 0); +inline std::string to_string(bool _Val) +{ + to_string((int)_Val); +} + +int stol_def(const std::string & str, const int & DefaultValue); + +std::string ToLower(std::string text); +std::string ToUpper(std::string text); /*procedury, zmienne i funkcje graficzne*/ void ComputeArc(double X0, double Y0, double Xn, double Yn, double R, double L, double dL, double & phi, double & Xout, double & Yout); /*wylicza polozenie Xout Yout i orientacje phi punktu na elemencie dL luku*/ void ComputeALine(double X0, double Y0, double Xn, double Yn, double L, double R, double & Xout, double & Yout); -inline bool fileExist(const std::string &name) +inline bool fileExists(const std::string &name) { struct stat buffer; return (stat(name.c_str(), &buffer) == 0); diff --git a/RealSound.cpp b/RealSound.cpp index b66dba9c..a493eeb1 100644 --- a/RealSound.cpp +++ b/RealSound.cpp @@ -40,6 +40,12 @@ TRealSound::TRealSound() bLoopPlay = false; // dŸwiêk wy³¹czony } +TRealSound::TRealSound(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, bool Dynamic, + bool freqmod, double rmin) +{ + Init(SoundName, SoundAttenuation, X, Y, Z, Dynamic, freqmod, rmin); +} + TRealSound::~TRealSound() { // if (this) if (pSound) pSound->Stop(); @@ -49,7 +55,7 @@ void TRealSound::Free() { } -void TRealSound::Init(char *SoundName, double DistanceAttenuation, double X, double Y, double Z, +void TRealSound::Init(const char *SoundName, double DistanceAttenuation, double X, double Y, double Z, bool Dynamic, bool freqmod, double rmin) { // Nazwa=SoundName; //to tak raczej nie zadzia³a, (SoundName) jest tymczasowe @@ -247,10 +253,17 @@ void TRealSound::ResetPosition() pSound->SetCurrentPosition(0); } -void TTextSound::Init(char *SoundName, double SoundAttenuation, double X, double Y, double Z, +TTextSound::TTextSound(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, + bool Dynamic, bool freqmod, double rmin) + : TRealSound(SoundName, SoundAttenuation, X, Y, Z, Dynamic, freqmod, rmin) +{ + Init(SoundName, SoundAttenuation, X, Y, Z, Dynamic, freqmod, rmin); +} + +void TTextSound::Init(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, bool Dynamic, bool freqmod, double rmin) { // dodatkowo doczytuje plik tekstowy - TRealSound::Init(SoundName, SoundAttenuation, X, Y, Z, Dynamic, freqmod, rmin); + //TRealSound::Init(SoundName, SoundAttenuation, X, Y, Z, Dynamic, freqmod, rmin); fTime = GetWaveTime(); AnsiString txt = AnsiString(SoundName); txt.Delete(txt.Length() - 3, 4); // obciêcie rozszerzenia diff --git a/RealSound.h b/RealSound.h index 372c0bbc..5b96bb49 100644 --- a/RealSound.h +++ b/RealSound.h @@ -33,10 +33,12 @@ class TRealSound double FM; // mnoznik czestotliwosci double FA; // offset czestotliwosci bool bLoopPlay; // czy zapêtlony dŸwiêk jest odtwarzany - TRealSound(); + TRealSound(); + TRealSound(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, bool Dynamic, + bool freqmod = false, double rmin = 0.0); ~TRealSound(); void Free(); - void Init(char *SoundName, double SoundAttenuation, double X, double Y, double Z, bool Dynamic, + void Init(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, bool Dynamic, bool freqmod = false, double rmin = 0.0); double ListenerDistance(vector3 ListenerPosition); void Play(double Volume, int Looping, bool ListenerInside, vector3 NewPosition); @@ -55,8 +57,10 @@ class TTextSound : public TRealSound AnsiString asText; float fTime; // czas trwania public: - void Init(char *SoundName, double SoundAttenuation, double X, double Y, double Z, bool Dynamic, - bool freqmod = false, double rmin = 0.0); + TTextSound(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, + bool Dynamic, bool freqmod = false, double rmin = 0.0); + void Init(const char *SoundName, double SoundAttenuation, double X, double Y, double Z, + bool Dynamic, bool freqmod = false, double rmin = 0.0); void Play(double Volume, int Looping, bool ListenerInside, vector3 NewPosition); }; diff --git a/Segment.cpp b/Segment.cpp index a5673124..379c95f3 100644 --- a/Segment.cpp +++ b/Segment.cpp @@ -16,6 +16,7 @@ http://mozilla.org/MPL/2.0/. #include "Usefull.h" #include "Globals.h" #include "Track.h" +#include //#define Precision 10000 diff --git a/Sound.cpp b/Sound.cpp index f9d63bdc..92eca7f7 100644 --- a/Sound.cpp +++ b/Sound.cpp @@ -15,6 +15,7 @@ http://mozilla.org/MPL/2.0/. #include "Sound.h" #include "Usefull.h" #include "Globals.h" +#include //#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } } #define SAFE_RELEASE(p) \ { \ @@ -33,7 +34,7 @@ LPDIRECTSOUNDNOTIFY TSoundsManager::pDSNotify; int TSoundsManager::Count = 0; TSoundContainer *TSoundsManager::First = NULL; -TSoundContainer::TSoundContainer(LPDIRECTSOUND pDS, char *Directory, char *strFileName, +TSoundContainer::TSoundContainer(LPDIRECTSOUND pDS, const char *Directory, const char *strFileName, int NConcurrent) { // wczytanie pliku dŸwiêkowego int hr = 111; @@ -54,7 +55,7 @@ TSoundContainer::TSoundContainer(LPDIRECTSOUND pDS, char *Directory, char *strFi // Load the wave file if (FAILED(pWaveSoundRead->Open(Name))) - if (FAILED(pWaveSoundRead->Open(strFileName))) + if (FAILED(pWaveSoundRead->Open(strdup(strFileName)))) { // SetFileUI( hDlg, TEXT("Bad wave file.") ); return; @@ -182,7 +183,7 @@ void TSoundsManager::Free() SAFE_RELEASE(pDS); }; -TSoundContainer * TSoundsManager::LoadFromFile(char *Dir, char *Name, int Concurrent) +TSoundContainer * TSoundsManager::LoadFromFile(const char *Dir, const char *Name, int Concurrent) { TSoundContainer *Tmp = First; First = new TSoundContainer(pDS, Dir, Name, Concurrent); @@ -203,7 +204,7 @@ void TSoundsManager::LoadSounds(char *Directory) FindClose(handle); }; -LPDIRECTSOUNDBUFFER TSoundsManager::GetFromName(char *Name, bool Dynamic, float *fSamplingRate) +LPDIRECTSOUNDBUFFER TSoundsManager::GetFromName(const char *Name, bool Dynamic, float *fSamplingRate) { // wyszukanie dŸwiêku w pamiêci albo wczytanie z pliku AnsiString file; if (Dynamic) diff --git a/Sound.h b/Sound.h index 914b977f..3ba4d5fd 100644 --- a/Sound.h +++ b/Sound.h @@ -39,7 +39,7 @@ class TSoundContainer TSoundContainer *Next; std::stack DSBuffers; LPDIRECTSOUNDBUFFER GetUnique(LPDIRECTSOUND pDS); - TSoundContainer(LPDIRECTSOUND pDS, char *Directory, char *strFileName, int NConcurrent); + TSoundContainer(LPDIRECTSOUND pDS, const char *Directory, const char *strFileName, int NConcurrent); ~TSoundContainer(); }; @@ -51,7 +51,7 @@ class TSoundsManager // static char Directory[80]; static int Count; static TSoundContainer *First; - static TSoundContainer * LoadFromFile(char *Dir, char *Name, int Concurrent); + static TSoundContainer * LoadFromFile(const char *Dir, const char *Name, int Concurrent); public: // TSoundsManager(HWND hWnd); @@ -61,7 +61,7 @@ class TSoundsManager static void Free(); static void Init(char *Name, int Concurrent); static void LoadSounds(char *Directory); - static LPDIRECTSOUNDBUFFER GetFromName(char *Name, bool Dynamic, float *fSamplingRate = NULL); + static LPDIRECTSOUNDBUFFER GetFromName(const char *Name, bool Dynamic, float *fSamplingRate = NULL); static void RestoreAll(); }; diff --git a/TractionPower.cpp b/TractionPower.cpp index 2ce4f1d4..5a119697 100644 --- a/TractionPower.cpp +++ b/TractionPower.cpp @@ -111,11 +111,11 @@ bool TTractionPowerSource::Update(double dt) { SlowFuse = true; ErrorLog("Power overload: \"" + gMyNode->asName + "\" disabled for " + - AnsiString(SlowFuseTimeOut) + "s"); + to_string(SlowFuseTimeOut) + "s"); } else ErrorLog("Power overload: \"" + gMyNode->asName + "\" disabled for " + - AnsiString(FastFuseTimeOut) + "s"); + to_string(FastFuseTimeOut) + "s"); FuseTimer = 0; } if (FastFuse || SlowFuse) diff --git a/parser.cpp b/parser.cpp index bf9cb6c4..e56b9e33 100644 --- a/parser.cpp +++ b/parser.cpp @@ -167,7 +167,7 @@ std::string cParser::readToken(bool ToLower, const char *Break) // if (trtest2.find("tr/")!=0) mIncludeParser = new cParser(includefile, buffer_FILE, mPath, LoadTraction); if (mIncludeParser->mSize <= 0) - ErrorLog("Missed include: " + AnsiString(includefile.c_str())); + ErrorLog("Missed include: " + includefile); } else while (token.compare("end") != 0) diff --git a/sky.cpp b/sky.cpp index c26b8722..72becf25 100644 --- a/sky.cpp +++ b/sky.cpp @@ -25,11 +25,9 @@ void TSky::Init() { WriteLog(Global::asSky.c_str()); WriteLog("init"); - AnsiString asModel; - asModel = Global::asSky; - if ((asModel != "1") && (asModel != "0")) + if ((Global::asSky != "1") && (Global::asSky != "0")) // { - mdCloud = TModelsManager::GetModel(asModel.c_str()); + mdCloud = TModelsManager::GetModel(Global::asSky.c_str()); // } };