FWH64 y Memoread()

FWH64 y Memoread()

Postby George » Mon Jan 27, 2014 6: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
George
 
Posts: 725
Joined: Tue Oct 18, 2005 6:49 pm

Re: FWH64 y Memoread()

Postby jnavas » Fri Nov 19, 2021 9:01 am

Saludos
Estoy experimentando resultado de Memoread() devuelve vacío en archivos de extensión TXT,
estoy evaluando utilizar la clase TFile
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: FWH64 y Memoread()

Postby Antonio Linares » Sat Nov 20, 2021 6:05 am

Dear George,

Este ejemplo funciona correctamente:
Code: Select all  Expand view  RUN
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 y Memoread()

Postby jnavas » Sun Nov 21, 2021 1: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
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: FWH64 y Memoread()

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: FWH64 y Memoread()

Postby jnavas » Mon Nov 22, 2021 9:55 pm

Antonio
Gracias por las recomendaciones.
Actualmente estamos migrando, tengo una experiencia actual (Donde memoread() devuelve vacio, xharbour .82).
User avatar
jnavas
 
Posts: 479
Joined: Wed Nov 16, 2005 12:03 pm
Location: Caracas - Venezuela

Re: FWH64 y Memoread()

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 48 guests