Exemple #1
0
BOOL sql_item2str( sql_item_arg *pItemArg, SQLSYS_INFO *pSysInfo )
{
   ULONG lSize  = 0L;         /* For Temporary values */
   char *szText = NULL;       /* Temporary buffer */
   BOOL bFree   = TRUE;
   
   if (!pItemArg)
   {
      HB_TRACE(HB_TR_DEBUG,("  Invalid Argument -> %p", pItemArg ));
      return FALSE;
   }
      
   if (!pSysInfo)
   {
      pSysInfo = (SQLSYS_INFO *) SQLSYS_GETINFO( 0 );
      
      // Valid driver? It has been correctly loaded into memory?
      if (!SR_ISVALID_DRIVER(pSysInfo))
      {
         HB_TRACE(HB_TR_DEBUG,("  Invalid driver !!" ));
         return FALSE;
      }
   }   
   
   HB_TRACE(HB_TR_DEBUG,("  ARGUMENT  => '%s'", hb_itemTypeStr( pItemArg->pItem ) ));
   
   switch( hb_itemType( pItemArg->pItem ) )
   {
      case HB_IT_MEMO:
      case HB_IT_STRING:
      {         
         HB_TRACE(HB_TR_DEBUG,("  As Text   => '%s'", hb_itemGetCPtr( pItemArg->pItem ) ));
         
         lSize  = hb_itemGetCLen( pItemArg->pItem );
         szText = (*pSysInfo->EscapeString) ( hb_itemGetCPtr( pItemArg->pItem ), &lSize, 0 );
         
         /*
         char *szTemp, *szBuff;
         szTemp = (*pSysInfo->EscapeString) ( hb_itemGetCPtr( pItemArg->pItem ), &lSize, 0 );
         
         if (szTemp)
         {
            szText = (char *) hb_xgrab( lSize + 3L );   // chr(0) + 2 separators
            szBuff = szText;
            
           *szText = pSysInfo->FieldDelim; szText ++;
            memcpy( szText, szTemp, lSize );
            szText += lSize;
           *szText = pSysInfo->FieldDelim; szText ++;
           *szText = '\0';
           
           hb_xfree( szTemp );
         }
         /***/
         break;
      }
      case HB_IT_LOGICAL:
         HB_TRACE(HB_TR_DEBUG,("  As BOOL   => %d", (int) hb_itemGetL( pItemArg->pItem ) ));
         szText = (hb_itemGetL( pItemArg->pItem ) ? pSysInfo->BoolTrue : pSysInfo->BoolFalse); 
         lSize  = strlen( szText );
         bFree  = FALSE;
         break;
         
      case HB_IT_DATE:
      {               
         int iYear, iMonth, iDay;
         hb_dateDecode( hb_itemGetDL( pItemArg->pItem ), &iYear, &iMonth, &iDay );
         HB_TRACE(HB_TR_DEBUG,("  As DATE   => %04d/%02d/%02d", iYear, iMonth, iDay ));
         
         if (pSysInfo->DateFormat == ESCAPE_FORMAT_DATE_ISO)
         {               
            szText = SQLSYS_DATETOISO( (char *) hb_xgrab(13), iYear, iMonth, iDay, TRUE );
            lSize  = 12L;
         }
         break;
      }   
      case HB_IT_INTEGER:
      case HB_IT_DOUBLE:
      case HB_IT_LONG:
      {
         szText = hb_itemStr( pItemArg->pItem, NULL, NULL );
         HB_TRACE(HB_TR_DEBUG,("  As Number => %s", szText ));
   
         if( szText )
         {
            ULONG nToSkip = 0L;
   
            while( szText[ nToSkip] == ' ' )
               ++nToSkip;
   
            /* Rever isto aqui de perto */
            if( nToSkip )
               memmove( szText, szText + nToSkip, strlen( szText + nToSkip ) + 1 );
            
            lSize = strlen( szText );
            HB_TRACE(HB_TR_DEBUG,("  As Text => '%s' -- %lu", szText, lSize ));
         }
         break;
      }
         
      default:                    
      {
         szText = (char *) hb_xgrab(5);
        *szText = '\0';
         strcat( szText, "NULL" );
         lSize  = strlen( szText );
         break;
      }
   }
      
   if (!szText)
   {
      HB_TRACE(HB_TR_DEBUG,("  Impossivel converter este valor:" ));
      HB_TRACE_ARGS( pItemArg->pItem ); 
      return FALSE;
   }
      
   pItemArg->szResult = szText;
   pItemArg->ulSize   = lSize; 
   pItemArg->bDestroy = bFree;      
   return TRUE;
}
Exemple #2
0
/* Export field values to text file */
static HB_BOOL hb_ExportVar( HB_FHANDLE handle, PHB_ITEM pValue, const char * cDelim, PHB_CODEPAGE cdp )
{
   switch( hb_itemType( pValue ) )
   {
      /* a "C" field */
      case HB_IT_STRING:
      {
         char * szStrEsc;
         char * szString;

         szStrEsc = hb_strescape( hb_itemGetCPtr( pValue ),
                                  hb_itemGetCLen( pValue ), cDelim );
         if( cdp )
            hb_cdpnDupLen( szStrEsc, strlen( szStrEsc ), hb_vmCDP(), cdp );

         szString = hb_xstrcpy( NULL, cDelim, szStrEsc, cDelim, NULL );

         /* FWrite( handle, szString ) */
         hb_fsWriteLarge( handle, szString, strlen( szString ) );

         /* Orphaned, get rif off it */
         hb_xfree( szStrEsc );
         hb_xfree( szString );
         break;
      }
      /* a "D" field */
      case HB_IT_DATE:
      {
         char * szDate = ( char * ) hb_xgrab( 9 );

         hb_itemGetDS( pValue, szDate );
         hb_fsWriteLarge( handle, szDate, strlen( szDate ) );
         hb_xfree( szDate );
         break;
      }
      /* an "L" field */
      case HB_IT_LOGICAL:
         hb_fsWriteLarge( handle, ( hb_itemGetL( pValue ) ? "T" : "F" ), 1 );
         break;
      /* an "N" field */
      case HB_IT_INTEGER:
      case HB_IT_LONG:
      case HB_IT_DOUBLE:
      {
         char * szResult = hb_itemStr( pValue, NULL, NULL );

         if( szResult )
         {
            HB_SIZE      nLen      = strlen( szResult );
            const char * szTrimmed = hb_strLTrim( szResult, &nLen );

            hb_fsWriteLarge( handle, szTrimmed, strlen( szTrimmed ) );
            hb_xfree( szResult );
         }
         break;
      }
      /* an "M" field or the other, might be a "V" in SixDriver */
      default:
         /* We do not want MEMO contents */
         return HB_FALSE;
   }
   return HB_TRUE;
}