Page 1 of 1

Para Mr Antonio Linares Tamanio de Registro

Posted: Mon Mar 24, 2008 12:26 am
by Arvisnet
En un post anterior lei lo siguiente:

<<<<<<<<
La función At() es extremadamente rápida ya que practicamente esta implementada al 100% en el propio microprocesador.

Lo que es lento es ir leyendo los registros de uno en uno. La solución a esto, aunque suene increible, es cargar de una vez toda la DBF en memoria usando MemoRead() y entonces hacer el At():

cDatos = MemoRead( "nombre.dbf" )
nPos = At( "lo que busco", cDatos )

Dividiendo el valor devuelto por At() por el tamaño de un registro (+ el tamaño de la cabecera) sabemos inmediatamente en que registro estamos. El siguiente At() se haría a partir de donde se encontró la primera ocurrencia.
>>>>>

se me hizo algo muy interesante ya que tengo una aplicacion que se me hizo super lenta en un proceso de busqueda / actualizacion..

Como se obtiene el tamanio de un registro + el tamanio de la cabecera??

saludos y Gracias.
Arnulfo

Posted: Mon Mar 24, 2008 8:49 am
by Antonio Linares
El tamaño de la cabecera lo devuelve la función Header()

El tamaño de un registro lo devuelve la función RecSize()

Según la documentación de Clipper:

#define DbfSize() (HEADER() + (RECSIZE() * LASTREC()) + 1)