void __fastcall TSaveObj::InsertDataSet(TDataSet* FromDs,TDataSet* Tods) { DynamicArray <Variant> valuearr; int i; if ((!FromDs->Active) ||(!FromDs->Active) || (FromDs->IsEmpty())) return; valuearr.Length = FromDs->FieldCount; for (i = 0 ; i<valuearr.Length; i++) valuearr[i] =FromDs->Fields->Fields[i]->Value; Tods->Append(); for (i = 0 ; i<valuearr.Length; i++) if (! IsInArr(Tods->Fields->Fields[i]->FieldName,FNotinherited,true)) Tods->Fields->Fields[i]->Value = valuearr[i]; valuearr.Length = 0; }
bool __fastcall TSaveObj::CopyInfo() { int len = FDataSetArr.Length; int i; for (i=0; i<len; i++) { if (!FDataSetArr[i]->Active) continue; if (FDataSetArr[i]->IsEmpty()) continue; if (!IsInArr(FDataSetArr[i]->Name,FWhileCDS,true)) { InsertDataSet(FDataSetArr[i],FDataSetArr[i]); } else { TClientDataSet* cds; try { cds = new TClientDataSet(NULL); cds->Data = FDataSetArr[i]->Data; FDataSetArr[i]->EmptyDataSet(); cds->First(); while (!cds->Eof) { InsertDataSet(cds,FDataSetArr[i]); cds->Next(); } } __finally { delete cds; } } } return true; }
int GetProcInfo () { struct tm *pre; long clock = 0; char sCPU[100], sMEM[100]; char sProcName[PROCESS_NAME_LEN]; int iTmpBillFlowID=-1, iTmpProcessID=-1; //已经显示的最大ID int iTmpAppID = -1; int iSelecetdPos = -2; int iListPos=0; // char tmp[128] = {0}; int ret = 0; InitList(); /* Control *pEdit = GetCtlByID(process_handle, 13); gStr2Arr(pEdit->sData); */ g_iflowid[0] = 0; Control *pEdit1 = GetCtlByID(process_handle, 15); gStr2Appid(pEdit1->sData); DetachShm (); if (AttachShm (0, (void **)&pInfoHead) >= 0) { pProcInfoHead = &pInfoHead->ProcInfo; } else { return -1; } time ((time_t *)&clock); memset(aiProcessID, 0, MAX_APP_NUM*sizeof(int)); iSelecetdPos = -1; while (iListPos < pInfoHead->iProcNum) { int iSelecetdPos = SearchNextNode(&iTmpBillFlowID, &iTmpProcessID,&iTmpAppID); //iSelecetdPos=6;//= SearchNextNode(&iTmpBillFlowID, &iTmpProcessID,&iTmpAppID); if (iSelecetdPos < 0) break; // // if( g_iflowid[0] && iTmpBillFlowID != g_iflowid ) // continue; if( ((g_iflowid[0] && !IsInArr( iTmpBillFlowID )))||((g_iappid[0] && !IsInAppid( iTmpAppID ))) || !(pProcInfoHead+iSelecetdPos)->iBillFlowID || !(pProcInfoHead+iSelecetdPos)->iProcessID ) continue; strncpy( sProcName, (pProcInfoHead+iSelecetdPos)->sName, PROCESS_NAME_LEN); sProcName[PROCESS_NAME_LEN] ='\0'; if ((pProcInfoHead+iSelecetdPos)->iState == ST_RUNNING) { memset(sCPU,0,sizeof(sCPU)); memset(sMEM,0,sizeof(sMEM)); pre = localtime ((const time_t *)&(pProcInfoHead+iSelecetdPos)->lLoginTime); GetSysProcInfo ((pProcInfoHead+iSelecetdPos)->iSysPID, sMEM, sCPU); memset( proc_list_data[iListPos],0,strlen(proc_list_data[iListPos]) ); sprintf (proc_list_data[iListPos], "%-4d %6d %-20s %02d%02d%02d%02d %11d %-4s %5s %3s%\0", (pProcInfoHead+iSelecetdPos)->iAppID, (pProcInfoHead+iSelecetdPos)->iProcessID, sProcName, pre->tm_mon+1, pre->tm_mday, pre->tm_hour, pre->tm_min, (pProcInfoHead+iSelecetdPos)->iAllTickets, gsState[(pProcInfoHead+iSelecetdPos)->iState], sMEM, sCPU ); } else { sprintf (proc_list_data[iListPos], "%-4d %6d %-20s -------- %11d %-4s %5d %3d%\0", (pProcInfoHead+iSelecetdPos)->iAppID, (pProcInfoHead+iSelecetdPos)->iProcessID, sProcName, (pProcInfoHead+iSelecetdPos)->iAllTickets, gsState[(pProcInfoHead+iSelecetdPos)->iState], 0, 0 ); } proc_list_index[iListPos] = proc_list_data[iListPos]; aiProcessID[iListPos] = (pProcInfoHead+iSelecetdPos)->iProcessID; iListPos++; //插入InfoList InfoList[ret] = pProcInfoHead+iSelecetdPos; ret ++; //iSelecetdPos = -1; } l_lprocnum = ret; return ret; }