//--------------------------------------------------------------------------- #include #include #pragma hdrstop #include "AppGlobalF.h" #include "ITSUtilF.h" #include "CDSCodeF.h" #include //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- ST_GISINFO g_GisInfo; ST_SELLINK g_SelLink; String CenterCd = ""; // Áö¿ª¼¾ÅÍ ÄÚµå String CenterId = ""; // Áö¿ª¼¾ÅÍ ¾ÆÀ̵ð String CenterName = ""; // Áö¿ª¼¾ÅÍ ¸íĪ int g_nPid = -1; // Application Process ID String g_sAppDir = ""; // Application Directory String g_sAppName= ""; // Program name String g_sCfgDir = ""; // Config File Directory String g_sLogDir = ""; // Program Log Directory String g_sTempDir = ""; // Program Temp Directory String g_sFormsDir = ""; // Program Forms Directory String g_sBlackBox = ""; String g_sLangDir = ""; String g_sImageDir = ""; String g_sVideoDir = ""; String g_sMapDir = ""; APP_CONFIG g_AppCfg; LOG_INFO g_LogCfg; TITSLog *ITSLog = NULL; TITSLog *FDbLog = NULL; bool g_bControlAuth = false; void ActiveProgram() { String AClassName = "TFrmVmsFormEdit"; String ATitle = g_AppCfg.sTitle + " - Active"; HWND hExeForm = FindWindow(AClassName.c_str(), ATitle.c_str()); if (hExeForm) { LOGINFO("Program exit.... Find Ok... Program already running...."); bool bResult = SetWindowPos(hExeForm, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE); if (bResult) { bResult = ShowWindow(hExeForm, SW_RESTORE); SetForegroundWindow(hExeForm); } } } //--------------------------------------------------------------------------- bool CheckParamRandKey(String AParam) { LOGINFO("------------------------------"); LOGINFO("Param: %s", AnsiString(AParam).c_str()); String appName = "its.vmsformedit://"; if (!AParam.Pos(appName)) { LOGINFO("Program exit.... Param AppName Error...."); return false; } String param = ""; param = StringReplace(AParam, appName, "", TReplaceFlags() << rfReplaceAll); param = StringReplace(param, "%20", ",", TReplaceFlags() << rfReplaceAll); //TODO: 20250207, ºê¶ó¿ìÀú°¡ ¾÷µ¥ÀÌÆ® µÇ¸é¼­ %20À» ÀνÄÇÏÁö ¸øÇÔ param = StringReplace(param, "^", ",", TReplaceFlags() << rfReplaceAll); param = StringReplace(param, "$", ",", TReplaceFlags() << rfReplaceAll); String userId = ""; String randKey = ""; String apiUri = ""; String skinName = ""; TStringList *pStringList = new TStringList; try { pStringList->Delimiter = ','; pStringList->StrictDelimiter = true; pStringList->DelimitedText = param; if (pStringList->Count < 3) { LOGINFO("Program exit.... Param Count Error...."); return false; } userId = pStringList->Strings[0]; randKey = pStringList->Strings[1]; apiUri = pStringList->Strings[2]; if (pStringList->Count > 3) { skinName = pStringList->Strings[3]; } } __finally { if (pStringList) delete pStringList; } if (!apiUri.Pos("http")) { LOGINFO("Program exit.... Param URI Error...."); return false; } if (skinName != "") { g_AppCfg.sSkinName = skinName; } LOGINFO(" userId: %s", AnsiString(userId).c_str()); LOGINFO(" randKey: %s", AnsiString(randKey).c_str()); LOGINFO(" apiUri: %s", AnsiString(apiUri).c_str()); //TODO: 20250207, ºê¶ó¿ìÀú°¡ ¾÷µ¥ÀÌÆ® µÇ¸é¼­ http:// °¡ http// ·Î ³Ñ¾î¿È apiUri = StringReplace(apiUri, "http//", "http://", TReplaceFlags() << rfReplaceAll); apiUri = StringReplace(apiUri, "https//", "https://", TReplaceFlags() << rfReplaceAll); LOGINFO(" apiUri: %s", AnsiString(apiUri).c_str()); LOGINFO("skinName: %s", AnsiString(skinName).c_str()); g_AppCfg.sUserId = userId; g_AppCfg.sRestApiUri = apiUri; if (randKey.UpperCase() == "VMSFORMEDITADMIN") { return true; } bool result = false; try { time_t lCurTm; time(&lCurTm); double current = (double)lCurTm; double paramTime = randKey.ToDouble(); if (paramTime >= current-3 && paramTime <= current+3) { result = true; } } catch(Exception &e) { } if (result == false) { LOGINFO("Program exit.... Param Error: %s", AParam.c_str()); } return result; } //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- void LoadIcon(TIniFile* AIniFile, String ASection, String AItem, String& AValue) { try { AValue = AIniFile->ReadString(ASection, AItem, ""); if (AValue != "") { AValue = g_sAppDir + "Image\\" + AValue; if (!FileExists(AValue)) AValue = ""; } } catch(Exception &e) { } } //--------------------------------------------------------------------------- #include #include #pragma comment (lib, "shlwapi.lib") bool IsDirectoryExists(LPCTSTR path) { return PathFileExists(path); #if 0 struct _stat buffer; int iRetTemp = 0; memset((void*)&buffer, 0, sizeof(buffer)); iRetTemp = _stat(path, &buffer); if (iRetTemp == 0) { if (buffer.st_mode & _S_IFDIR) { return true; } } return false; #endif } //--------------------------------------------------------------------------- bool LoadDefaultConfigInfo(String ACfgFile/*=""*/) { String sCfgFile; TIniFile *pIniFile = NULL; String sIniFile = ChangeFileExt(ExtractFileName(Application->ExeName), ".ini"); if (!ACfgFile.IsEmpty()) sIniFile = ACfgFile + ".ini"; sCfgFile = g_sCfgDir + sIniFile; g_AppCfg.sConfigFile = sCfgFile; g_AppCfg.AutoLogout.Enabled = false; g_AppCfg.AutoLogout.IntervalMin = 0; g_AppCfg.AutoLogout.LogoutExit = false; g_AppCfg.thr.pThread = NULL; g_AppCfg.thr.dwThreadId = 0; g_AppCfg.thr.nHandle = 0; g_AppCfg.thr.bRunning = false; g_AppCfg.bAppClose = false; try { String sTmp; pIniFile = new TIniFile(sCfgFile); g_AppCfg.sTitle = pIniFile->ReadString("APPLICATION", "TITLE", "VMS Æû ÆíÁý±â"); g_AppCfg.sProcessId = pIniFile->ReadString("APPLICATION", "PROCESSID", "999999"); g_AppCfg.nVmsServerPort = pIniFile->ReadString("APPLICATION", "VMSSERVERPORT", "6001").ToIntDef(6001); g_AppCfg.sLogDay = pIniFile->ReadString("APPLICATION", "LOGDAY", ""); g_AppCfg.sAppPath = pIniFile->ReadString("APPLICATION", "APP_PATH", ""); g_AppCfg.sSkinName = pIniFile->ReadString("APPLICATION", "SKINNAME", "Black"); if (g_AppCfg.sSkinName.IsEmpty()) g_AppCfg.sSkinName = "Blue"; sTmp = pIniFile->ReadString("APPLICATION", "SAVEFORM", "1"); g_AppCfg.bSaveForm = (sTmp == "1") ? true : false; sTmp = "1"; sTmp = pIniFile->ReadString("APPLICATION", "LOGINPROMPT", "1"); g_AppCfg.bLoginPrompt = (sTmp == "1") ? true : false; g_AppCfg.sDefUseId = pIniFile->ReadString("APPLICATION", "LASTUSER", ""); g_AppCfg.sLang = pIniFile->ReadString("APPLICATION", "LANGUAGE", "kr"); g_AppCfg.sLang = g_AppCfg.sLang.LowerCase(); if (g_AppCfg.sLang != "en" && g_AppCfg.sLang != "kr") g_AppCfg.sLang = "kr"; g_AppCfg.isDispOfflineMsg = false; sTmp = pIniFile->ReadString("APPLICATION", "DISPOFFLINEMSG", "0"); if (sTmp == "1") g_AppCfg.isDispOfflineMsg = true; g_AppCfg.bDebug = false; sTmp = pIniFile->ReadString("APPLICATION", "DEBUG", "0"); if (sTmp == "1") g_AppCfg.bDebug = true; g_AppCfg.bTermChildProg = true; sTmp = pIniFile->ReadString("APPLICATION", "TERMCHILD", "1"); if (sTmp == "0") g_AppCfg.bTermChildProg = false; g_AppCfg.bOnlyOneScreen = true; sTmp = pIniFile->ReadString("APPLICATION", "ONESCREEN", "1"); if (sTmp == "0") g_AppCfg.bOnlyOneScreen = false; sTmp = pIniFile->ReadString("ALARM", "WINDOW", "1"); g_AppCfg.Alarm.Window = (sTmp == "1") ? true : false; sTmp = pIniFile->ReadString("ALARM", "ENABLED", "0"); g_AppCfg.Alarm.Enabled = (sTmp == "1") ? true : false; sTmp = pIniFile->ReadString("ALARM", "TIMEOUT", "10"); g_AppCfg.Alarm.TimeOut = sTmp.ToIntDef(0); if (g_AppCfg.Alarm.TimeOut == 0) g_AppCfg.Alarm.TimeOut = 10; if (g_AppCfg.Alarm.TimeOut > 60) g_AppCfg.Alarm.TimeOut = 60; sTmp = pIniFile->ReadString("TEMPERATURE", "ALARMVALUE", "45"); g_AppCfg.Temp.AlarmValue = sTmp.ToIntDef(0); sTmp = pIniFile->ReadString("INCIDENT", "WINDOW", "1"); g_AppCfg.Incident.Window = (sTmp == "1") ? true : false; sTmp = pIniFile->ReadString("INCIDENT", "ENABLED", "0"); g_AppCfg.Incident.Enabled = (sTmp == "1") ? true : false; sTmp = pIniFile->ReadString("INCIDENT", "TIMEOUT", "30"); g_AppCfg.Incident.TimeOut = sTmp.ToIntDef(0); if (g_AppCfg.Incident.TimeOut == 0) g_AppCfg.Incident.TimeOut = 30; if (g_AppCfg.Incident.TimeOut > 300) g_AppCfg.Incident.TimeOut = 60; sTmp = pIniFile->ReadString("AUTOLOGOUT", "ENABLED", "0"); g_AppCfg.AutoLogout.Enabled = (sTmp == "1") ? true : false; sTmp = pIniFile->ReadString("AUTOLOGOUT", "INTERVALMIN", "10"); g_AppCfg.AutoLogout.IntervalMin = sTmp.ToIntDef(0); if (g_AppCfg.AutoLogout.IntervalMin == 0) g_AppCfg.AutoLogout.IntervalMin = 10; sTmp = pIniFile->ReadString("AUTOLOGOUT", "LOGOUTEXIT", "0"); g_AppCfg.AutoLogout.LogoutExit = (sTmp == "1") ? true : false; String sSqlLog; g_AppCfg.itsdb.bSqlLog = false; g_AppCfg.itsdb.sProvider = pIniFile->ReadString("ITSDB", "PROVIDER", "OraOLEDB.Oracle.1"); g_AppCfg.itsdb.sServerName = pIniFile->ReadString("ITSDB", "SERVERNAME", "HANTE"); g_AppCfg.itsdb.sUserName = pIniFile->ReadString("ITSDB", "USERNAME", "hnits"); g_AppCfg.itsdb.sPassword = pIniFile->ReadString("ITSDB", "PASSWORD", "hnits"); //sSqlLog = pIniFile->ReadString("ITSDB", "SQLLOG", "0"); //if (sSqlLog == "1") g_AppCfg.itsdb.bSqlLog = true; #if 0 //½Ã¼³¹° ¾ÆÀÌÄÜ °æ·Î ·Îµù¤§ LoadIcon(pIniFile, "VMS", "ICON_N", g_AppCfg.vms.ICON[icon_n]); LoadIcon(pIniFile, "VMS", "ICON_E", g_AppCfg.vms.ICON[icon_e]); LoadIcon(pIniFile, "VMS", "ICON_M", g_AppCfg.vms.ICON[icon_m]); LoadIcon(pIniFile, "VMS", "ICON_R", g_AppCfg.vms.ICON[icon_r]); LoadIcon(pIniFile, "VMS", "ICON_S", g_AppCfg.vms.ICON[icon_s]); LoadIcon(pIniFile, "VDS", "ICON_N", g_AppCfg.vds.ICON[icon_n]); LoadIcon(pIniFile, "VDS", "ICON_E", g_AppCfg.vds.ICON[icon_e]); LoadIcon(pIniFile, "VDS", "ICON_M", g_AppCfg.vds.ICON[icon_m]); LoadIcon(pIniFile, "VDS", "ICON_R", g_AppCfg.vds.ICON[icon_r]); LoadIcon(pIniFile, "VDS", "ICON_S", g_AppCfg.vds.ICON[icon_s]); #endif CenterId = pIniFile->ReadString("CENTER", "CENTERID", "L01"); CenterName = pIniFile->ReadString("CENTER", "CENTERNAME", "Áß¾Ó¼¾ÅÍ"); CenterCd = CenterId.SubString(2, 2).ToIntDef(0); // GIS ¼³Á¤Á¤º¸ ·Îµù g_GisInfo.mapType = pIniFile->ReadInteger("MAP", "MAPTYPE", 1); g_GisInfo.offLineMapPath = pIniFile->ReadString ("MAP", "OFFLINEMAP", ""); //g_GisInfo.onLineMapPath = pIniFile->ReadString ("MAP", "ONLINEMAP", ""); if (g_GisInfo.mapType != 0 && g_GisInfo.mapType != 1) g_GisInfo.mapType = 1; /* 1: Online, 0: Offline */ if (IsDirectoryExists(g_GisInfo.offLineMapPath.c_str())) { g_GisInfo.offLineMapPath = g_GisInfo.offLineMapPath+"\\"; g_GisInfo.offLineMapPath = StringReplace(g_GisInfo.offLineMapPath, ":\\", "://", TReplaceFlags() << rfReplaceAll); g_GisInfo.offLineMapPath = StringReplace(g_GisInfo.offLineMapPath, "\\", "/", TReplaceFlags() << rfReplaceAll); } else { if (g_GisInfo.offLineMapPath.UpperCase().Pos("HTTP")) { g_GisInfo.offLineMapPath = g_GisInfo.offLineMapPath+"/"; } else { g_GisInfo.offLineMapPath = ""; } } g_GisInfo.imagePath = g_sMapDir+"images\\"; g_GisInfo.imagePath = StringReplace(g_GisInfo.imagePath, ":\\", "://", TReplaceFlags() << rfReplaceAll); g_GisInfo.imagePath = StringReplace(g_GisInfo.imagePath, "\\", "/", TReplaceFlags() << rfReplaceAll); g_GisInfo.sApiKey = pIniFile->ReadString ("MAP", "APIKEY", ""); g_GisInfo.nZoomLevel = pIniFile->ReadInteger("MAP", "INITZOOM", 11); g_GisInfo.nMinZoom = pIniFile->ReadInteger("MAP", "MINZOOM", 1); g_GisInfo.nMaxZoom = pIniFile->ReadInteger("MAP", "MAXZOOM", 19); g_GisInfo.nFacilityZoom = pIniFile->ReadInteger("MAP", "FACILITYZOOM", 14); g_GisInfo.dCenterX = pIniFile->ReadString ("MAP", "CENTERX", "33.3536449").ToDouble(); g_GisInfo.dCenterY = pIniFile->ReadString ("MAP", "CENTERY", "126.5278103").ToDouble(); //VMS FTP g_AppCfg.vmsFtp.SERVER = pIniFile->ReadString("VMS_FTP", "SERVER", ""); g_AppCfg.vmsFtp.PORT = pIniFile->ReadString("VMS_FTP", "PORT", "21").ToIntDef(21); g_AppCfg.vmsFtp.USER = pIniFile->ReadString("VMS_FTP", "USER", ""); g_AppCfg.vmsFtp.PSWD = pIniFile->ReadString("VMS_FTP", "PSWD", ""); g_AppCfg.vmsFtp.PASSIVE = pIniFile->ReadString("VMS_FTP", "PASSIVE", "0").ToIntDef(0) == 0 ? false : true; } __finally { if (pIniFile) delete pIniFile; pIniFile = NULL; //WriteConfigInfo(sCfgFile, "AUTOLOGOUT", "LOGOUTEXIT", "0"); } return true; } //--------------------------------------------------------------------------- /* * ȯ°æ¼³Á¤ Á¤º¸¸¦ ÀúÀåÇÏ´Â ÇÔ¼ö. * arguments * String : RegisterKey ¶Ç´Â ÆÄÀÏÀ̸§ * return * bool : ½ÇÆÐÇϸé false */ bool WriteConfigInfo(String sCfgFile, String sTitle, String sItem, String sValue) { String ConfigFile; TIniFile *pIniFile = NULL; ConfigFile = sCfgFile; try { pIniFile = new TIniFile(ConfigFile); if (pIniFile == NULL) { return false; } pIniFile->WriteString(sTitle, sItem, sValue); } catch(...) { } if (pIniFile) { pIniFile->Free(); pIniFile = NULL; } return true; } //--------------------------------------------------------------------------- /* * ȯ°æ¼³Á¤ Á¤º¸¸¦ Àоî¿À´Â ÇÔ¼ö. * arguments * String : RegisterKey ¶Ç´Â ÆÄÀÏÀ̸§ * return * bool : ½ÇÆÐÇϸé false */ bool ReadConfigInfo(String sCfgFile, String sTitle, String sItem, String &sValue) { bool bRes; String ConfigFile; TIniFile *pIniFile = NULL; bRes = false; ConfigFile = sCfgFile; try { pIniFile = new TIniFile(ConfigFile); if (pIniFile == NULL) { return bRes; } sValue = pIniFile->ReadString(sTitle, sItem, ""); if (sValue != "") { bRes = true; } } catch(...) { } if (pIniFile) { pIniFile->Free(); pIniFile = NULL; } return bRes; } //--------------------------------------------------------------------------- void ShowErrorMsg(String ATitle, String AErrMsg) { Application->NormalizeTopMosts(); Application->MessageBox(AErrMsg.c_str(), ATitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); Application->RestoreTopMosts(); } //---------------------------------------------------------------------------- String APP_FillCode(TcxComboBox *ACombo, String ACode) { String sReturn = ""; ACombo->Properties->Items->Clear(); TItsCode *FCodeRMF = ItsCodeManager->FLists.Find(ACode); if (FCodeRMF) { FOR_STL(TItsSubCode *, pSubCode, FCodeRMF->FSubLists) { if (pSubCode->USE_YN == "N") continue; ACombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM); if (sReturn == "") { sReturn = " [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM; } } } ACombo->ItemIndex = 0; return sReturn; } //---------------------------------------------------------------------------- String APP_GetCode(TcxComboBox *ACombo) { String sReturn = ""; if (ACombo->ItemIndex >= 0) { String sDesc = ACombo->Properties->Items->Strings[ACombo->ItemIndex]; String sCode = sDesc.SubString(sDesc.Pos("[") + 1, sDesc.Pos("]") - (sDesc.Pos("[") + 1)); sReturn = sCode; } return sReturn; } //---------------------------------------------------------------------------- String APP_GetCodeDesc(TcxComboBox *ACombo, String ACode) { String sReturn = ""; for (int ii = 0; ii < ACombo->Properties->Items->Count; ii++) { String sDesc = ACombo->Properties->Items->Strings[ii]; String sCode = sDesc.SubString(sDesc.Pos("[") + 1, sDesc.Pos("]") - (sDesc.Pos("[") + 1)); if (ACode == sCode) { sReturn = sDesc; break; } } return sReturn; } //---------------------------------------------------------------------------- String APP_GetCodeName(TcxComboBox *ACombo, String ACode) { String sReturn = ""; for (int ii = 0; ii < ACombo->Properties->Items->Count; ii++) { String sDesc = ACombo->Properties->Items->Strings[ii]; String sName = sDesc.SubString(sDesc.Pos("]") + 1, sDesc.Length()); String sCode = sDesc.SubString(sDesc.Pos("[") + 1, sDesc.Pos("]") - (sDesc.Pos("[") + 1)); if (ACode == sCode) { sReturn = sName.Trim(); break; } } return sReturn; } //---------------------------------------------------------------------------- String APP_GetCodeIdByName(TcxComboBox *ACombo, String AName) { String sReturn = "3"; for (int ii = 0; ii < ACombo->Properties->Items->Count; ii++) { String sDesc = ACombo->Properties->Items->Strings[ii]; String sName = sDesc.SubString(sDesc.Pos("]") + 1, sDesc.Length()); String sCode = sDesc.SubString(sDesc.Pos("[") + 1, sDesc.Pos("]") - (sDesc.Pos("[") + 1)); if (sName.Trim() == AName.Trim()) { sReturn = sCode; break; } } return sReturn; } //---------------------------------------------------------------------------- String APP_GetCodeDefCode(TcxComboBox *ACombo) { String sReturn = ""; if (ACombo->Properties->Items->Count > 0) { String sDesc = ACombo->Properties->Items->Strings[0]; String sCode = sDesc.SubString(sDesc.Pos("[") + 1, sDesc.Pos("]") - (sDesc.Pos("[") + 1)); sReturn = sCode; } return sReturn; } //---------------------------------------------------------------------------- String APP_GetCodeDefDesc(TcxComboBox *ACombo) { String sReturn = ""; if (ACombo->Properties->Items->Count > 0) { String sDesc = ACombo->Properties->Items->Strings[0]; sReturn = sDesc; } return sReturn; } //---------------------------------------------------------------------------- int APP_SetCode(TcxComboBox *ACombo, String ACode) { int nItemIndex = -1; for (int ii = 0; ii < ACombo->Properties->Items->Count; ii++) { String sDesc = ACombo->Properties->Items->Strings[ii]; String sCode = sDesc.SubString(sDesc.Pos("[") + 1, sDesc.Pos("]") - (sDesc.Pos("[") + 1)); if (ACode == sCode) { nItemIndex = ii; break; } } ACombo->ItemIndex = nItemIndex; return nItemIndex; } //---------------------------------------------------------------------------- ULONG ProcIDFromWnd(HWND hwnd) // À©µµ¿ì ÇÚµé·Î ÇÁ·Î¼¼½º ¾ÆÀ̵ð ¾ò±â { ULONG idProc; GetWindowThreadProcessId( hwnd, &idProc ); return idProc; } //---------------------------------------------------------------------------- HWND GetWinHandle(ULONG pid) // ÇÁ·Î¼¼½º ¾ÆÀ̵ð·Î À©µµ¿ì ÇÚµé ¾ò±â { HWND tempHwnd = FindWindow(NULL,NULL); // ÃÖ»óÀ§ À©µµ¿ì ÇÚµé ã±â while( tempHwnd != NULL ) { if( GetParent(tempHwnd) == NULL ) // ÃÖ»óÀ§ ÇÚµéÀÎÁö üũ, ¹öư µîµµ ÇÚµéÀ» °¡Áú ¼ö ÀÖÀ¸¹Ç·Î ¹«½ÃÇϱâ À§ÇØ if( pid == ProcIDFromWnd(tempHwnd) ) return tempHwnd; tempHwnd = GetWindow(tempHwnd, GW_HWNDNEXT); // ´ÙÀ½ À©µµ¿ì ÇÚµé ã±â } return NULL; } //---------------------------------------------------------------------------- String ITSUtil_FormatStr(String AStrDateTime, String AFormat) { #define SYEAR "-" #define STIME ":" #define SPACE " " String sDateTime = ""; String sInData = AnsiString(AStrDateTime); //ShowMessage("IN: " + AStrDateTime + " " + sInData + " " + AFormat); if (sInData.IsEmpty()) return sInData; //sDateTime = sInData; try { if (AFormat == STR_DATETIME) { if (sInData.Length() < 14) return sInData; sDateTime = sInData.SubString( 1, 4) + SYEAR + sInData.SubString( 5, 2) + SYEAR + sInData.SubString( 7, 2) + SPACE + sInData.SubString( 9, 2) + STIME + sInData.SubString(11, 2) + STIME + sInData.SubString(13, 2); } else if (AFormat == STR_HHNN) { if (sInData.Length() < 12) return sInData; sDateTime = sInData.SubString( 1, 4) + SYEAR + sInData.SubString( 5, 2) + SYEAR + sInData.SubString( 7, 2) + SPACE + sInData.SubString( 9, 2) + STIME + sInData.SubString(11, 2); } else if (AFormat == STR_DATEHOUR) { if (sInData.Length() < 10) return sInData; sDateTime = sInData.SubString( 1, 4) + SYEAR + sInData.SubString( 5, 2) + SYEAR + sInData.SubString( 7, 2) + SPACE + sInData.SubString( 9, 2); } else if (AFormat == STR_DATE) { if (sInData.Length() < 8) return sInData; sDateTime = sInData.SubString( 1, 4) + SYEAR + sInData.SubString( 5, 2) + SYEAR + sInData.SubString( 7, 2); } else if (AFormat == STR_MM) { if (sInData.Length() < 6) return sInData; sDateTime = sInData.SubString( 1, 4) + SYEAR + sInData.SubString( 5, 2); } else { sDateTime = sInData; } } catch(...) { } //ShowMessage("OUT: " + sDateTime); return sDateTime; } //--------------------------------------------------------------------------- TColor g_DispColor[MAX_DISPCOLOR]; void APP_InitDisplayColor() { #if 0 g_DispColor[ 0] = Graphics::clBlue; g_DispColor[ 1] = Graphics::clRed; g_DispColor[ 2] = Graphics::clLime; g_DispColor[ 3] = Graphics::clMaroon; g_DispColor[ 4] = Graphics::clGreen; g_DispColor[ 5] = Graphics::clMenuHighlight; g_DispColor[ 6] = Graphics::clBackground; g_DispColor[ 7] = Graphics::clPurple; g_DispColor[ 8] = Graphics::clTeal; g_DispColor[ 9] = Graphics::clYellow; g_DispColor[10] = Graphics::clFuchsia; g_DispColor[11] = Graphics::clAqua; g_DispColor[12] = Graphics::clMoneyGreen; g_DispColor[13] = Graphics::clSkyBlue; g_DispColor[14] = Graphics::clRed; g_DispColor[15] = Graphics::clLime; g_DispColor[16] = Graphics::clYellow; g_DispColor[17] = Graphics::clBlue; g_DispColor[18] = Graphics::clFuchsia; g_DispColor[19] = Graphics::clAqua; g_DispColor[20] = Graphics::clMoneyGreen; g_DispColor[21] = Graphics::clActiveCaption; #else g_DispColor[ 0] = Graphics::clLime; g_DispColor[ 1] = (TColor)RGB(0xFF, 0x00, 0x00); g_DispColor[ 2] = (TColor)RGB(0x00, 0x00, 0xFF); g_DispColor[ 3] = (TColor)RGB(0xFF, 0x82, 0x00); g_DispColor[ 4] = (TColor)RGB(0x94, 0x00, 0xD3); g_DispColor[ 5] = Graphics::clPurple;//(TColor)RGB(0x00, 0x00, 0x00); g_DispColor[ 6] = (TColor)RGB(0x82, 0x82, 0x82); g_DispColor[ 7] = (TColor)RGB(0x1E, 0x90, 0xFF); g_DispColor[ 8] = (TColor)RGB(0xB9, 0x06, 0x2F); g_DispColor[ 9] = (TColor)RGB(0x8c, 0x00, 0x8c); g_DispColor[10] = (TColor)RGB(0xFF, 0x82, 0x00); g_DispColor[11] = (TColor)RGB(0x94, 0x00, 0xD3); g_DispColor[12] = (TColor)RGB(0xB0, 0xC4, 0xDE); g_DispColor[13] = (TColor)RGB(0x00, 0xBF, 0xFF); g_DispColor[14] = (TColor)RGB(0x87, 0xCE, 0xEB); g_DispColor[15] = (TColor)RGB(0x87, 0xCE, 0xFA); g_DispColor[16] = (TColor)RGB(0xAD, 0xD8, 0xE6); g_DispColor[17] = (TColor)RGB(0xB0, 0xE0, 0xE6); g_DispColor[18] = (TColor)RGB(0xE6, 0xE6, 0xFA); g_DispColor[19] = (TColor)RGB(0xF0, 0xF8, 0xFF); #endif } //--------------------------------------------------------------------------- TColor APP_GetDisplayColor(int ASeq) { return g_DispColor[ASeq % MAX_DISPCOLOR]; } //--------------------------------------------------------------------------- void APP_ImageClear(TCanvas *c, int offX, int offY, int w, int h, TColor color) { try { c->Pen->Color = clWhite; c->Pen->Width = 0; c->Pen->Style = psClear; c->Brush->Style = bsSolid; c->Brush->Color = color; c->Rectangle(offX, offY, w+offX+2, h+offY+2); } catch(...) { } } //--------------------------------------------------------------------------- #include TDateTime APP_StrToDateTime(String AStrDateTime) { TDateTime dtReturnValue = NULL; if (AStrDateTime.IsEmpty()) return dtReturnValue; if (AStrDateTime.Length() != 14) return dtReturnValue; AnsiString sDateTime = AnsiString(AStrDateTime); try { #if 0 sDateTime.printf(L"%s-%s-%s %s:%s:%s", AStrDateTime.SubString( 1, 4).c_str(), AStrDateTime.SubString( 5, 2).c_str(), AStrDateTime.SubString( 7, 2).c_str(), AStrDateTime.SubString( 9, 2).c_str(), AStrDateTime.SubString(11, 2).c_str(), AStrDateTime.SubString(13, 2).c_str()); dtReturnValue = StrToDateTime(sDateTime); #endif // swscanf(sRgb.c_str(), L"%d,%d,%d", &r, &g, &b); int year, month, day, hour, minute, second; sscanf(sDateTime.c_str(), "%4d%2d%2d%2d%2d%2d", &year, &month, &day, &hour, &minute, &second); dtReturnValue = EncodeDateTime(year, month, day, hour, minute, second, 0); } catch(...) { } return dtReturnValue; } //---------------------------------------------------------------------------