FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ASave() que tipo de valor retorna
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
ASave() que tipo de valor retorna
Posted: Thu Dec 16, 2010 12:31 AM

Tengo una aplicación que utilíza muchos archivos que graban arrays en disco con esta función. Estoy portandolo a MySQL y me gustaría guardar estos arrays en el motor. Si verifico el tipo de dato que devuelve ASave() con type() o ValType() me devuelven "U", pero abrá en MySQL algún tipo de dato que lo soporte ??. Alguien sabe..., Gracias de antemano

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: ASave() que tipo de valor retorna
Posted: Thu Dec 16, 2010 12:48 AM
Horacio

http://wiki.fivetechsoft.com/doku.php?id=fivewin_funcion_asave

retorna una cadena

este es un a ejmeplo (tomado tambien del wiki de fivewin)
Code (fw): Select all Collapse
#include 'fivewin.ch'
 
//------------------------------------------------//
Function Main()
Local aData1,aData2,cBinData
 
   aData1:={"Tom","Dickenson","Harry"}
   cBinData:=ASave(aData1)  // Converts Array Data and to Binary and stores in cStr

   ? ValType( cBinData )
 
   aData2:=ARead(cBinData)  // Reads data from Binary and then converts back to Array
   MsgList(aData2)
   
 
Return nil
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: ASave() que tipo de valor retorna
Posted: Tue Dec 28, 2010 10:25 AM

Horacio, a lo mejor te interesa cambiar ASave() por ValToPrg()

Peaaaaaso de foro...

FWH 2007 - xHarbour - BCC55
Posts: 1789
Joined: Tue Oct 11, 2005 05:01 PM
Re: ASave() que tipo de valor retorna
Posted: Tue Dec 28, 2010 05:28 PM
Esta es una version viejita de la funcion Val2PrgExp incluida con xharbour, uso esta viejita y no la version actual por alguna razon de peso que no recuedo ahora
si recuerdo que me toco buscar por muchos lugares para buscar esta version en particular, encontrandola en el cvs.

Code (fw): Select all Collapse
   //guardar en campo memo DESGLOSC un arreglo 
   aDesgC := {{"100",15},{"50",10},{"20",7},{"10",3},{"5",8},{"1",12}}
   CAJA->DESGLOSC := Val2PrgExp( aDesgC )

  //recuperar
  aDesgC := NIL
  aDesgC := &( CAJA->DESGLOSC ) //precompila el arreglo contenido en el campo memo
  ?valtype(aDesgC), len(aDesgC)


Code (fw): Select all Collapse
FUNCTION Val2PrgExp( xVal )

   LOCAL cType := ValType( xVal )
   LOCAL aVar, cRet

   SWITCH cType

   CASE 'C'
      IF ! '"' IN xVal
         RETURN '"' + xVal + '"'
      ELSEIF ! "'" IN xVal
         RETURN "'" + xVal + "'"
      ELSEIF ( ! "[" IN xVal ) .AND. ( ! "]" IN xVal )
         RETURN "[" + xVal + "]"
      ELSE
         Throw( ErrorNew( "CSTR", 0, 3102, ProcName(), "Can't stringify", { xVal } ) )
         EXIT
      ENDIF
   CASE 'D'
      RETURN "sToD( '" + dToS( xVal ) + "' )"

   CASE 'L'
      RETURN IIF( xVal, ".T.", ".F." )

   CASE 'N'
      RETURN Ltrim( Str( xVal ) )

   CASE 'A'
      cRet := "{ "
      FOR EACH aVar IN xVal
         cRet += ( Val2PrgExp( aVar ) + ", " )
      NEXT
      IF cRet[ -2 ] == ','
         cRet[ -2 ] := ' '
      ENDIF
      cRet[ -1 ] := '}'
      RETURN cRet
   DEFAULT
      IF xVal == NIL
         cRet := "NIL"
      ELSE
         Throw( ErrorNew( "VALTOPRG", 0, 3103, ProcName(), "Tipo no soportado", { xVal } ) )
      ENDIF
   END

RETURN cRet
Salu2

Carlos Vargas

Desde Managua, Nicaragua (CA)

Continue the discussion