FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour FWH64 y Memoread()
Posts: 729
Joined: Tue Oct 18, 2005 06:49 PM
FWH64 y Memoread()
Posted: Mon Jan 27, 2014 06:09 PM

Hola foro y Fivetechsoft,
He estado haciendo pruebas con Memoread() y FWH64 version 13.08 para leer archivos de texto.
Esta funcion es bien rapida; por ejemplo lee un archivo de 3,837,926KB en solo 85.2 segundos en mi Windows 7 - 64 bits desktop.

El problema es que cuando el archivo pasa de 4 giga esta funcion no se ejecuta.

Puesto que en Windows 7 - 64 Bits y FWH64 se debe sobrepasar el limite de los 4 gigs, es posible que la limitacion la tengamos en la funcion Memoread().
Mi pregunta es si se puede modificar el codigo fuente de Memoread() para evitar este limite cuando se usa FWH64?

Saludos,

George

Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: FWH64 y Memoread()
Posted: Fri Nov 19, 2021 09:01 AM

Saludos
Estoy experimentando resultado de Memoread() devuelve vac铆o en archivos de extensi贸n TXT,
estoy evaluando utilizar la clase TFile

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FWH64 y Memoread()
Posted: Sat Nov 20, 2021 06:05 AM
Dear George,

Este ejemplo funciona correctamente:
Code (fw): Select all Collapse
function Main()

聽 聽local cOver4GB := Space( 5 * ( 1024 ^ 3 ) )

聽 聽? Len( cOver4GB )
   hb_MemoWrit( "over4GB", cOver4GB )
聽 聽
   ? Len( hb_MemoRead( "over4GB" ) ) 聽// comenta esto la primera vez y la segunda comenta todo menos esta l铆nea

return nil


Comenta la 煤ltima l铆nea la primera vez que lo ejecutes para que se cree el fichero de 5GB "over4GB".
Ahora modifica el c贸digo y usa solo esto: ? Len( hb_MemoRead( "over4GB" ) )

Aqui se est谩 comportando correctamente. Si tienes la limitaci贸n de 4GB es que estas usando 32 bits en vez de 64 bits.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: FWH64 y Memoread()
Posted: Sun Nov 21, 2021 01:34 AM

Saludos
Logr茅 resolver mediante
FUNCTION MEMOREADX(cFile)
LOCAL oFile,cLinea,cMemo:=""

DEFAULT cFile:="DATAPRO.INI"

oFile:= TTxtFile():New(cFile, 0)

WHILE !oFile:Eof()
cLinea:=oFile:ReadLine()
cMemo :=cMemo+IF(Empty(cMemo),"",CRLF)+cLinea
oFile:Skip()
ENDDO

oFile:Close()

RETURN cMemo

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FWH64 y Memoread()
Posted: Sun Nov 21, 2021 11:27 PM

Juan,

Usar la funci贸n hb_MemoWrit() es mucho m谩s r谩pido que hacerlo como muestras

Tu sistema es correcto, pero si buscamos la m谩xima velocidad de ejecuci贸n entonces hb_MemoRead() es el camino a tomar

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 492
Joined: Wed Nov 16, 2005 12:03 PM
Re: FWH64 y Memoread()
Posted: Mon Nov 22, 2021 09:55 PM

Antonio
Gracias por las recomendaciones.
Actualmente estamos migrando, tengo una experiencia actual (Donde memoread() devuelve vacio, xharbour .82).

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FWH64 y Memoread()
Posted: Mon Nov 22, 2021 10:06 PM

Juan,

Olv铆date de xHarbour y usa Harbour. Es mi mejor consejo :-)

hb_MemoRead() de Harbour funciona de maravilla.

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion