FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error reallocate memory
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Error reallocate memory
Posted: Tue Nov 04, 2008 01:06 PM
Hola


UNRECOVERABLE ERROR 9009:
hb_xrealloc can't reallocate memory


Al pasar a la version 8.10 me da 茅ste error en algo que antes no me lo daba, al imprimir la facturaci贸n con preview.

He probado a las soluciones que di贸 antonio como sysrefresh(), etc, y nada.

Si imprimo por pantalla 5 o 6 facturas, no hay problema, el problema es presentar la facturaci贸n, unas 500 facturas por pantalla.

Repito, con fwh 2.7 funciona perfectamente.

El c贸digo es el siguiente:
static function Recunon(tipo,aAlias)

   local oini
   local oFont1, oFont2, oFont3,ofont4,ofont5,oFont6,oFont7,oPen1,oPen2
   local aTamano, nWidth, nHeight, nMargin, nLblWidth, nLblHeight
   local oPrn
   local swp:=0
   local nbase:=0,nbaseimpo,nneto,nalbaran
   local tbase,tseguro,timportiva,tliquido,tbaseimpo
   local ofin
   local npiva
   local cliqui
   local nfor,nlines,cline,textoc
   local liz,nlin
   local odlg,cDomip,cPoblap,cTelfax,cemail,cweb 
   local ccodpro,cnompro,cdirpro,cnifpro,cPoblapro,cProvinpro,ccp
   local cfpago,domiban,descuento,tdescuento
   local Grabar:=.F.
   local hoja:=1
   local oRadio,osay
   local nOpcion,oboton,oboton1
   local nkgs
   local pone:=space(1)
   local pasada:=1
   local corden
   local lmode:=.F.
   local cnombre
   local xcopia:=.F.
   local pinta:=.F.
   local cnif,i
   local xdatos,cvenci
   local lineas:=iif(tipo=1,22,25.5)
   local oBrush,oBrush1
   local cindi:=(aAlias[24])->( OrdSetFocus() )
   local cindi1:=(aAlias[22])->( OrdSetFocus() )   
   local primero:=space(1)
   local colu:=0
   local lpdf:=.F.
   local lnpdf:=.F.
   local tpdf:=.F.
   local ppdf,nfecha
   local mensaje:='LAS COPIAS DE ESTOS ALBARANES ESTAN DISPONIBLES EN NUESTRA PAGINA WEB'
   local treten
   Publicas:aini:=1
   Publicas:aFin:=99999
   (aAlias[22])->(OrdSetFocus("numero"))
   (aAlias[24])->(OrdSetFocus("factura"))
//------------------------
   DEFINE DIALOG oDlg RESOURCE "DESDER" BRUSH Publicas:oBrush1 TRANSPARENT Font Publicas:oWPpal:ofont
  for i = 10 to 11
    REDEFINE SAY oSay ID i OF oDlg COLOR CLR_GREEN
  next i
   REDEFINE get oini VAR Publicas:aini ID 101 OF oDlg picture "@E 99999"  
   REDEFINE get ofin VAR Publicas:aFin ID 102 OF oDlg picture "@E 99999"
   REDEFINE RADIO oRadio VAR nOpcion ID 103,104 OF oDlg
   REDEFINE CHECKBOX lpdf  ID 200 OF oDlg on change oDlg:Update() WHEN lnpdf=.F. .and. tpdf=.F.
   REDEFINE CHECKBOX lnpdf ID 201 OF oDlg on change oDlg:Update() WHEN lpdf =.F. .and. tpdf=.F.
   REDEFINE CHECKBOX tpdf ID 202 OF oDlg on change oDlg:Update() WHEN lpdf =.F. .and. lnpdf=.F.
   REDEFINE BUTTON oboton ID 550 OF oDlg PROMPT "Aceptar" ;
                                ACTION (Grabar := .T.,oDlg:End())
   REDEFINE BUTTON oboton1 ID 551 OF oDlg PROMPT "Cancelar" ;
                                ACTION (Grabar := .F.,oDlg:End()) CANCEL
   ACTIVATE DIALOG oDlg CENTERED

if grabar
  Publicas:cIni:=padl(Publicas:aini,5,"0")
  Publicas:cFin:=padl(Publicas:aFin,5,"0")
  IF !(aAlias[22])->(dbseek(Publicas:cIni))
      msginfo("no lo encuentro")
  ELSE
   lmode:=iif (nOpcion=1,.F.,.T.)
  if lpdf=.T. .or. tpdf=.T.
   (aAlias[22])->(Ordsetfocus("numero"))    
   (aAlias[22])->(oRDscope(0,(Publicas:cIni)))
   (aAlias[22])->(oRDscope(1,(Publicas:cFin)))
   imppdf(tipo,aAlias,lpdf,tpdf)
   (aAlias[22])->(oRDscope(0,Nil))
   (aAlias[22])->(oRDscope(1,Nil))
  else
   (aAlias[22])->(DbSetfilter( {|| (aAlias[22])->numero >= Publicas:cIni .and. (aAlias[22])->numero <= Publicas:cFin },'(aAlias[22])->numero >= Publicas:cIni .and. (aAlias[22])->numero <= Publicas:cFin') )
   (aAlias[22])->(Ordsetfocus("ruta"))
   (aAlias[22])->(Dbgobottom())
   (aAlias[22])->(Dbgotop())
   oPrn := PrintBegin("Imprimiendo", .T., lMode,, .F. )  
      if Empty( oPrn:hDC )
         MsgStop( "Impresora no preparada !" )
         return nil
      endif
   DEFINE FONT oFont1 NAME "COURIER NEW" SIZE 0,-9               OF oPrn
   DEFINE FONT oFont2 NAME "COURIER NEW" SIZE 0,-12 BOLD         OF oPrn
   DEFINE FONT oFont3 NAME "COURIER NEW" SIZE 0,-12 BOLD ITALIC  OF oPrn
   DEFINE FONT oFont4 NAME "COURIER NEW" SIZE 0,-9  BOLD         OF oPrN
   DEFINE FONT oFont5 NAME "COURIER NEW" SIZE 0,-10 BOLD         OF oPrN
   DEFINE FONT oFont6 NAME "ARIAL" SIZE 0,-11              OF oPrN
   DEFINE FONT oFont7 NAME "Arial" SIZE 0,-36 BOLD OF oPrN
   DEFINE PEN oPen1 Width 3 COLOR CLR_BLUE
   DEFINE PEN oPen2 Width 8 COLOR CLR_BLUE
   DEFINE BRUSH oBrush COLOR CLR_LIGHTGRAY
   DEFINE BRUSH oBrush1 COLOR CLR_WHITE
   OpRN:Setportrait()
   oPrn:SetPage( 9)		// Selecciono el Formato A4
   aTamano:=oPrn:GetPhysize()	// Indica el Tama陇o del papel en mm. ( ancho x largo )
   nWidth :=oPrn:nHorzRes()
   nHeight:=oPrn:nVertRes()
     do while !(aAlias[22])->(Eof())
             ccodpro   :=(aAlias[22])->codigo
	     (aAlias[21])->(dbseek(ccodpro))
	     ppdf      :=(aAlias[21])->pdf
           if lnpdf=.T. .and. ppdf=.T. // if de pdf
	     (aAlias[22])->(Dbskip())
	     loop
	    else
	    if swp=1
             hoja:=hoja+1
             swp:=0
            else
	     primero:=space(1)
             hoja:=1
             nbase:=0
             nfecha    :=dtoc((aAlias[22])->fecha)
*            ccodpro   :=(aAlias[22])->codigo
	     cvenci    :=dtoc((aAlias[22])->venci)
	     xdatos    :=alltrim((aAlias[22])->Datos)
	     (aAlias[4])->(Dbseek((aAlias[22])->empresa))
	     cnombre   :=alltrim((aAlias[4])->nombre)
             cnif      :="N.I.F. "+alltrim((aAlias[4])->nif)
	     cDomip    :=alltrim((aAlias[4])->domicilio)
	     cPoblap   :=alltrim((aAlias[4])->codpos)+'-'+alltrim((aAlias[4])->poblacion)+'-'+'('+alltrim((aAlias[4])->provin)+')'
             cTelfax   :='Telf. '+alltrim((aAlias[4])->Telefono)+'-'+'Fax '+alltrim((aAlias[4])->Fax)
	     cemail    :='e-mail: '+alltrim((aAlias[4])->email)
	     cweb      :='P谩gina web: '+alltrim((aAlias[4])->web)
*	     (aAlias[21])->(dbseek(ccodpro))
*	     ppdf      :=(aAlias[21])->pdf
	     corden    :=(aAlias[21])->ordenf
             cnompro   :=trim((aAlias[21])->nombre)
             cdirpro   :=trim((aAlias[21])->calle)
             cnifpro   :=(aAlias[21])->dni
             npiva     :=transform((aAlias[22])->iva,"@Z 99.99")
             ccp       :=(aAlias[21])->cp
             cPoblapro :=trim((aAlias[21])->pobla)
             cProvinpro:=trim((aAlias[21])->provin)
             cfpago    :=iif((aAlias[21])->dpago=1,"Giro","Reposicion")
             domiban   :=(aAlias[21])->entidad+space(1)+(aAlias[21])->agencia+space(1)+;
             (aAlias[21])->dc+space(1)+substr((aAlias[21])->cuenta,1,6)+"****"
	     xcopia    :=iif((aAlias[21])->copia='S' .and. pinta=.F.,.T.,.F.)
             cliqui:=(aAlias[22])->numero
	   if corden='A'
	     (aAlias[24])->(Ordsetfocus('facturaal'))
             (aAlias[24])->(dbseek(cliqui))
	   else
	     (aAlias[24])->(Ordsetfocus('factura'))
             (aAlias[24])->(dbseek(cliqui))
	   endif
	  endif
      PAGE

	   if tipo=2
             CmtToPixel( 1.5,1, 7, 2.5, oPrn )
             oPrn:Saybitmap( Publicas:nLiz, Publicas:nCiz,Publicas:rlogo,Publicas:nLDe,Publicas:nCDe)
	     CmtToPixel( 3.7,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cnombre,oFont6,,RGB(3,35,195),,2 )
             CmtToPixel( 4.1,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cnif,oFont6,,,,2 )
	     CmtToPixel( 4.5,4.5, 0, 0, oPrn )
	     oPrn:Say( Publicas:nLiz, Publicas:nCiz,cDomip,oFont6,,,,2 )
             CmtToPixel( 4.9,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cPoblap,oFont6,,,,2 )
             CmtToPixel( 5.6,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cTelfax,oFont6,,RGB(131,186,247),,2 )
             CmtToPixel( 6,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cemail,oFont6,,,,2 )
             CmtToPixel( 6.4,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cweb,oFont6,,,,2 )
If Pinta
    CajaRound(12,                            ;
              0.5,                            ;
              17,        ;
              2.3 -0.1,100,100,oPrn,oPen2,oBrush )
             CmtToPixel( 0.5,14.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"COPIA",oFont7,,RGB(0,0,0),,2 )
Endif
    CajaRound(9.5,                            ;
              4 ,                            ;
              19.9,        ;
              7.8 -0.1,100,100,oPrn,oPen2,oBrush1 )
    CajaRound(0.6,                            ;
              8.1,                            ;
              19.9,        ;
              9.5 -0.1,50,50,oPrn,oPen2,oBrush1 )
    CajaRound(0.6,                            ;
              9.6,                            ;
              19.9,        ;
              28.3 -0.1,50,50,oPrn,oPen2,oBrush1 )
	     CmtToPixel( 9.6,2.7, 26.2, 2.7, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 9.6,10, 26.2, 10, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 9.6,13, 26.2, 13, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 9.6,15.5, 26.2, 15.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 9.6,17.5, 26.2, 17.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,0.6, 26.2, 19.9, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.7,0.6, 26.7, 19.9, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.5,0.6, 8.5, 19.9, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 10.2,0.6, 10.2, 19.9, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.1,2.7, 9.4, 2.7, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.1,5, 9.4, 5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.1,8.5, 9.4, 8.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.1,12, 9.4, 12, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.1,18.5, 9.4, 18.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 8.1,1, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"CLIENTE",oFont5,,RGB(0,0,0) )
             CmtToPixel( 8.1,2.9, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"N潞FACTURA",oFont5 )
             CmtToPixel( 8.1,6, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"FECHA",oFont5 )
             CmtToPixel( 8.1,9, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"FORMA DE PAGO",oFont5 )
             CmtToPixel( 8.1,13.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"DOMICILIO DE COBRO",oFont5 )
             CmtToPixel( 8.1,18.6, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"C.REP.",oFont5 )
             CmtToPixel( 9.8,1, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"FECHA",oFont5 )
             CmtToPixel( 9.8,3.1, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"(C)CONSIGNATARIO o (R)REMITENTE",oFont5 )
             CmtToPixel( 9.8,10.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"EXPEDICION",oFont5 )
             CmtToPixel( 9.8,13.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"BULTOS",oFont5 )
             CmtToPixel( 9.8,16, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"KILOS",oFont5 )
             CmtToPixel( 9.8,18, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"IMPORTE",oFont5 )
          endif
//-------- CABECERA DEL RECIBO
           // impresion de los textos
             if ccodpro="99999"
             CmtToPixel( 4.5,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"CLIENTES DE CONTADO",oFont3 )
	     else
             CmtToPixel( 5,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cnompro,oFont3 )
             endif
	     CmtToPixel( 5.5,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cdirpro,oFont3 )
             CmtToPixel( 6,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cPoblapro,oFont3 )
             CmtToPixel( 6.5,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,ccp+space(2)+cProvinpro,oFont3 )
             CmtToPixel( 7,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"C.I.F./N.I.F...:"+cnifpro,oFont3 )
             CmtToPixel( 4,10, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,strcapfirst(xDatos),oFont3 )
             CmtToPixel( 8.7,1, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,+ccodpro,oFont4 )
             CmtToPixel( 8.7,6, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,nfecha,oFont4 )
             CmtToPixel( 8.7,3.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cliqui,oFont4 )
             CmtToPixel( 8.7,9, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,cfpago+iif(cfpago='Giro',' '+cvenci,' '),oFont4 )
             CmtToPixel( 8.7,12.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,domiban,oFont4 )
             CmtToPixel( 8.7,19.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,(aAlias[22])->ruta,oFont4 )
           if (aAlias[24])->kkilos<> 0 .and. tipo = 1
             CmtToPixel( 9.7,16, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,'KILOS',oFont5 )
	   endif
	     liz:=10.4
	    do while .t.
             nbaseimpo:=transform((aAlias[24])->baseimpo,"@Z 99,999.99")
	     if (aAlias[24])->Bk = 'B'
                nneto    :=transform((aAlias[24])->kilos,"@Z 999,999")
	        nkgs     :=' '
	     else
                nneto    :=transform((aAlias[24])->kkilos,"@Z 999,999")
	        nkgs     :=transform((aAlias[24])->kilos,"@Z 999,999")
	     endif
	     if (aAlias[24])->cr<>primero .and. (aAlias[24])->obse<>.T.
	     primero:=(aAlias[24])->cr
	     if (aAlias[24])->cr='C'
                pone:='--- RECIBIDOS ---'
              else
                pone:='--- ENVIADOS  ---'
             endif
	        CmtToPixel( liz,3, 0, 0, oPrn )
                oPrn:Say( Publicas:nLiz, Publicas:nCiz,pone,oFont5,,CLR_HRED)
		liz+=0.6
             endif
             nalbaran :=(aAlias[24])->albaran
	     textoc:=(aAlias[24])->observaci
             CmtToPixel( liz,1, 0, 0, oPrn )
	     oPrn:Say( Publicas:nLiz, Publicas:nCiz,dtoc((aAlias[24])->fecha),oFont1,,RGB(0,0,0))
            if (aAlias[24])->obse=.T.
               nLines   := MlCount(textoc,35)
             FOR nFor := 1 TO nLines
               cLine := MemoLine(textoc, 35, nFor)
               CmtToPixel( liz,3, 0, 0, oPrn )
               oPrn:Say(Publicas:nLiz, Publicas:nCiz,cLine,oFont1) 
	       liz+=0.3
               NEXT
	    else
	     CmtToPixel( liz,3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,iif((aAlias[24])->datos1=space(40),(aAlias[24])->prou,(aAlias[24])->datos1),oFont1 )
            endif
	     CmtToPixel( liz,12, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,nalbaran,oFont1,,,,1 )
             CmtToPixel( liz,15, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,nneto,oFont1,,,,1 )
             CmtToPixel( liz,17, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,nkgs,oFont1,,,,1 )
             CmtToPixel( liz,19.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,nbaseimpo,oFont1,,,,1 )
             nbase+=(aAlias[24])->baseimpo
             liz+=0.3
             (aAlias[24])->(dbskip())
              if (aAlias[24])->factura<> cliqui .or. (aAlias[24])->(eof())
                exit
              endif
              if liz >= lineas
	        swp:=1
                exit
              endif
	  enddo
	      if swp=1
                 CmtToPixel( 26.3,15, 0, 0, oPrn )
                 oPrn:Say( Publicas:nLiz, Publicas:nCiz,"IMPORTE PARCIAL",oFont5 )
      		 CmtToPixel( 27.5,19.8, 0, 0, oPrn )
                 oPrn:Say( Publicas:nLiz, Publicas:nCiz,transform(nbase,"@Z 99,999.99"),oFont3,,,,1 )
                 liz:=liz+3
                 CmtToPixel( liz,1, 0, 0, oPrn )
                 oPrn:Say( Publicas:nLiz, Publicas:nCiz,"Sigue en otra hoja ............",oFont5,,,,1 )
           ENDPAGE
                 loop
               endif
             tbase     :=transform(nbase,"@Z 99,999.99")
	     descuento :=(aAlias[22])->descuento
             tdescuento:=transform(descuento ,"@Z 99,999.99")
	     tseguro   :=transform((aAlias[22])->seguro ,"@Z 99,999.99")
             tbaseimpo :=transform((aAlias[22])->base ,"@Z 99,999.99")
             timportiva:=transform((aAlias[22])->importiva,"@Z 99,999.99")
             treten    :=transform((aAlias[22])->retencion,"@Z 99,999.99")               
             tliquido  :=transform((aAlias[22])->total,"@Z 99,999.99")
	     if tipo=1
             CmtToPixel( 24.5,3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tbase,oFont1,,,,1 )
             CmtToPixel( 24.5,6, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tseguro,oFont1,,,,1 )
             CmtToPixel( 24.5,9, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tbaseimpo,oFont1,,,,1 )
             CmtToPixel( 24.5,10.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,npiva,oFont1,,,,1 )
             CmtToPixel( 24.5,13, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,timportiva,oFont1,,,,1 )
             CmtToPixel( 24.5,19.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tliquido,oFont3,,,,1 )
             CmtToPixel( 26,19.8, 0, 0, oPrn )
	     endif
	     if tipo=2
             if descuento=0
             CmtToPixel( 26.2,3.7, 28.2, 3.7, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,6.5, 28.2, 6.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,9.2, 28.2, 9.2, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,10.5, 28.2, 10.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,12.5, 28.2, 12.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,15.5, 28.2, 15.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
	     CmtToPixel( 26.3,1.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"IMPORTE",oFont5 )
             CmtToPixel( 26.3,4.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"SEGURO",oFont5 )
             CmtToPixel( 26.3,6.7, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"B.IMPONIBLE",oFont5 )
             CmtToPixel( 26.3,9.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"%IVA.",oFont5 )
             CmtToPixel( 26.3,11, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"I.V.A.",oFont5 )
             CmtToPixel( 26.3,13, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"RETENCION",oFont5 )
	     CmtToPixel( 26.3,15.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz," IMPORTE TOTAL",oFont5 )
	     CmtToPixel( 27.5,3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tbase,oFont1,,,,1 )
             CmtToPixel( 27.5,6, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tseguro,oFont1,,,,1 )
             CmtToPixel( 27.5,9, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tbaseimpo,oFont1,,,,1 )
             CmtToPixel( 27.5,10.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,npiva,oFont1,,,,1 )
             CmtToPixel( 27.5,12.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,timportiva,oFont1,,,,1 )
             CmtToPixel( 27.5,15.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,treten,oFont1,,,,1 )
             CmtToPixel( 27.5,19.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tliquido,oFont3,,,,1 )
             CmtToPixel( 28.5,10.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,mensaje,oFont3,,RGB(254,48,0),,2 )
	     else
             CmtToPixel( 26.2,3.7, 28.2, 3.7, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,6, 28.2, 6, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,8, 28.2, 8, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,10.5, 28.2, 10.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,12, 28.2, 12, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,14, 28.2, 14, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
             CmtToPixel( 26.2,16.5, 28.2, 16.5, oPrn )
             oPrn:line( Publicas:nLiz, Publicas:nCiz,Publicas:nLDe,Publicas:nCDe,open1 )
	     CmtToPixel( 26.3,1.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"IMPORTE",oFont5 )
             CmtToPixel( 26.3,4, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"DESCUENTO",oFont5 )
             CmtToPixel( 26.3,6.4, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"SEGURO",oFont5 )
             CmtToPixel( 26.3,8.1, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"B.IMPONIBLE",oFont5 )
             CmtToPixel( 26.3,10.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"%IVA.",oFont5 )
             CmtToPixel( 26.3,12.4, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"I.V.A.",oFont5 )
             CmtToPixel( 26.3,14.2, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,"RETENCION",oFont5 )
             CmtToPixel( 26.3,16.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz," IMPORTE TOTAL",oFont5 )
	     CmtToPixel( 27.5,3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tbase,oFont1,,,,1 )
             CmtToPixel( 27.5,5.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tdescuento,oFont1,,,,1 )
             CmtToPixel( 27.5,7.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tseguro,oFont1,,,,1 )
             CmtToPixel( 27.5,10.3, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tbaseimpo,oFont1,,,,1 )
             CmtToPixel( 27.5,11.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,npiva,oFont1,,,,1 )
             CmtToPixel( 27.5,13.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,timportiva,oFont1,,,,1 )
             CmtToPixel( 27.5,15.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,treten,oFont1,,,,1 )
             CmtToPixel( 27.5,19.8, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,tliquido,oFont3,,,,1 )
             CmtToPixel( 28.5,10.5, 0, 0, oPrn )
             oPrn:Say( Publicas:nLiz, Publicas:nCiz,mensaje,oFont3,,RGB(254,48,0),,2 )
	     endif
	     endif
	     pone:=space(1)
	     pinta:=.F.
      ENDPAGE
             if xcopia
	     pinta:=.T.
	     loop
	     endif
	    endif   // endif de pdf
             (aAlias[22])->(Dbskip())
          if (aAlias[22])->(eof()) 
          exit
          endif
      sysrefresh()
     enddo
   ENDPRINT
   oFont2:End()
   oFont1:End()
   oFont3:End()
   oFont4:End()
   oFont5:End()
   oFont6:End()
   oFont7:End()
   oPen1:End()
   oPen2:End()
   oBrush:End()
  (aAlias[22])->(Dbsetfilter())
  endif
 endif
endif
// (aAlias[22])->(Dbsetfilter())
 (aAlias[22])->(Ordsetfocus(cindi1))
 (aAlias[24])->(Ordsetfocus(cindi))
return nil

//----------------------------------------------------------------------------//


Saludos

Jose Luis
--------------------------

Saludos



Jose Luis
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Tue Nov 04, 2008 01:29 PM

Jose Luis,

Usas Harbour 贸 xHarbour ? Que versi贸n ?

Te genera alg煤n fichero log ?

Ten en cuenta que la gesti贸n de la memoria es algo propio de Harbour/xharbour salvo que se est茅 haciendo algo mal en el c贸digo.

Has cambiado algo recientemente en ese c贸digo ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Error reallocate memory
Posted: Tue Nov 04, 2008 02:00 PM

Antonio

Uso xharbour, y como digo en el post, este error me da con la version 8.10 , ya que con la 2.7 funciona perfectamente.

No genera ningun log, s贸lamente la ventana de aviso que he dicho anteriormente

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Tue Nov 04, 2008 05:28 PM

Jose Luis,

Podr铆as construirlo con Harbour ?

Harbour nos proporcionar谩 informaci贸n acerca de desde donde se ha solicitado ese "realocateo" de memoria.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 838
Joined: Fri Feb 10, 2006 12:14 PM
Error reallocate memory
Posted: Thu Nov 06, 2008 08:48 AM

I've got the same problem.

Does sysrefresh work in the same way?

Antonio

Regards

Antonio H Ferreira
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Thu Nov 06, 2008 08:55 AM

Antonio,

Do you have a way to reproduce it, in a small example ?

>
UNRECOVERABLE ERROR 9009:
hb_xrealloc can't reallocate memory
>

FWH does not manage the memory. Harbour/xHarbour do it.

If we find a way to reproduce it here then we can try to find whats going on.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Error reallocate memory
Posted: Thu Nov 06, 2008 09:39 AM
Jos茅 Luis,

JoseLuis wrote: este error me da con la version 8.10 , ya que con la 2.7 funciona perfectamente.


Probablemente est茅s usando un xHarbour diferente, ya que creo que FW 8.10 es para la version mas uneva de xHarbour y que ese xHarbour no te vale para la 2.7.

Prueba usando un xHarbour de setiembre. Yo no he tenido ese problema pq uso Harbour, pero he visto en otros foros problemas similares haciendo cosas diferentes, como consultas SQL y cosas que trastean con la memoria.

Un saludo,

Carlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
鈥淚f you think education is expensive, try ignorance"
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Error reallocate memory
Posted: Tue Nov 25, 2008 10:25 PM

Antonio

He intentado recompilar todo para Harbour como me indicaste, y he desistido, ya que tengo todo estructurado para xHarbour, y si intento compilar con Harbour, empiezan los problemas de todo tipo.

El error que menciono, se da s贸lo cuando imprimo las facturas con preview. Si imprimo a impresora o a pdf, va correctamente.

No obstante si la impresi贸n por pantalla es de s贸lo unas pocas facturas (8 o 10), tampoco falla. El problema es que tengo que imprimir por pantalla unas 400 facturas.

Repito, todo esto funciona correctamente con la version 2.7

Segun el fuente que he posteado, que puede haber dentro del do while... enddo que va cargando la memoria?, ya que cada vez que hace 茅ste bucle es una factura.

Carlos.

La version de xharbour que utilizo es la correcta para fw8.10.

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Tue Nov 25, 2008 11:21 PM

Jose Luis,

Recientemente tuve la "suerte" de encontrarme con un bug de programacion que finalmente generaba un error "hb_xrealloc can't reallocate memory" y descubri que se generaba por intentar crear una cadena realmente enorme, a base de ir anadiendole mas y mas cadenas.

Haz lo siguiente:

Antes de que llegues a las 400 visualizaciones, genera un error (por ejemplo llamando directamente a X++) y revisa en el error.log si encuentras una variable tipo cadena que sea realmente enorme. El fallo viene por ahi.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Error reallocate memory
Posted: Tue Nov 25, 2008 11:24 PM

Antonio

De acuerdo, ma帽ana me pongo, lo que no entiendo es porqu茅 con anteriores versiones no pasaba.

Saludos

Jose Luis

--------------------------

Saludos



Jose Luis
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Tue Nov 25, 2008 11:36 PM
Jose Luis,

Este es un ejemplo que reproduce el error:
function Main()

   local cText := Space( 1000000 )
   local n
   
   for n = 1 to 1000
      cText += cText
   next   

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Tue Nov 25, 2008 11:37 PM

Jose Luis,

> lo que no entiendo es porqu茅 con anteriores versiones no pasaba

Cuando consigamos aislar el origen de esa cadena que crece, entenderemos porque esta ocurriendo.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Tue Nov 25, 2008 11:56 PM
Pensando en este error, supuse que se trata porque en 32 bits no podemos usar un bloque de memoria superior a 4 gigas, asi que he probado este ejemplo:
function Main()

   local cText := Space( 1024 * 1024 * 1024 )
   
   MsgInfo( "1 giga" )
   
   cText += cText

   MsgInfo( "2 gigas" )

return nil

y no llega a poder manejar 2 gigas, lo cual me sorprende. Salvo que me este equivocando.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Error reallocate memory
Posted: Wed Nov 26, 2008 12:02 AM

Parece que es correcto mi calculo, pues un giga es 2 elevado a 30:

MsgInfo( 2 ^ 30 == ( 1024 * 1024 * 1024 ) )

muestra .T.

Luego por alguna razon que habra que comentar en la lista de desarrollo de Harbour, no conseguimos llegar a los 2 gigas.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 199
Joined: Tue Apr 22, 2008 09:54 AM
Error reallocate memory
Posted: Wed Nov 26, 2008 07:58 AM
Esto me recuerda bastante a los problemas que tuvimos con OrdWildSeek para generar un 铆ndice, en las comparaciones con SubNtx():

http://67.222.39.232/forums/viewtopic.php?t=12620&postdays=0&postorder=asc&highlight=subntx&start=15

triumvirato wrote:Pues con OrdWildSeek(), se llega a producir un error, imagino que debido al colapso de memoria驴?... (no s茅 si digo una burrada, pero es lo que parece), arrojando el siguiente error:

----------------------------------------
Total 16036824 allocations (5334271 reallocation), of which 16036823 freed.
Highest total allocated 6900507 bytes in 5073 blocks.
WARNING! Memory allocated but not released: 40 bytes (1 blocks)
source\vm\fm.c:778: HB_TR_ERROR Block 1 00B0B24C (size 40) ORDLISTADD(0), "4CB2B
0004CB2B000E0AD44000100020002000000000000000A000000010000000000000000000000"

Hasta este error, llev谩bamos 38 segundos (no s茅 si efectivos de b煤squeda o como causa que luego arroja), con 铆ndice CDX, por lo que no creo que en velocidad lleguemos a igualar a SubNtx()

Saludos!