Hi Fernando, Perhaps you can use hbmemio. I think that hbmemio has been created for this purpose...
Guy Fernando Athayde a écrit :
ASORT(::aArrayResumo, {|a,b| str(a[1],11)+str(a[3],11)+dtoc(a[5])+a[7] > str(b[1],11)+str(b[3],11)+dtoc(b[5])+b[7] } )//Normal way (Slow for more than 100 registers) nPosicaoArray := ASCAN(::aArrayResumo, ; {|a| str(a[1],11)+str(a[3],11)+dtoc(a[5])+a[7] ==;STR( ::oQueryRelatorioPrincipal:fieldGet('idgrupo_centro_custo'),11)+; STR(::oQueryRelatorioPrincipal:fieldGet('idcentro_custo'),11 )+; DTOC(oDB:Mysql2Date (::oQueryRelatorioPrincipal:fieldGet('data_emissao') ) )+cSiglaMoeda} )//Weighted search (Is very fast) nPosicaoArray := 0 nArraySize := LEN( ::aArrayResumo ) nJump := nArraySize - 1 nPosition := 1 DO WHILE .T. nPosition += nJump IF nPosition > nArraySize nJump := 0 nPosition := nArraySize ENDIFIF str(::aArrayResumo[nPosition,1],11)+str(::aArrayResumo[nPosition,3],11); +dtoc(::aArrayResumo[nPosition,5])+::aArrayResumo[nPosition,7] >; STR( ::oQueryRelatorioPrincipal:fieldGet('idgrupo_centro_custo'),11 ); +STR( ::oQueryRelatorioPrincipal:fieldGet('idcentro_custo'),11 ); +DTOC(oDB:Mysql2Date (::oQueryRelatorioPrincipal:fieldGet('data_emissao') ) )+cSiglaMoedanPosition -= nJump nJump := INT(nJump/2) ENDIFIF str(::aArrayResumo[nPosition,1],11)+str(::aArrayResumo[nPosition,3],11); +dtoc(::aArrayResumo[nPosition,5])+::aArrayResumo[nPosition,7] == STR( ::oQueryRelatorioPrincipal:fieldGet('idgrupo_centro_custo'),11 ); +STR( ::oQueryRelatorioPrincipal:fieldGet('idcentro_custo'),11 ); +DTOC(oDB:Mysql2Date (::oQueryRelatorioPrincipal:fieldGet('data_emissao') ) )+cSiglaMoedanPosicaoArray := nPosition EXIT ENDIF IF nJump<1 EXIT ENDIF ENDDO my proposal is made a ASCANEX sending a block how parameter but i don´t know how to use eval and blocks Thanks, Fernando Athayde
_______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
