Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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;
}