Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Hombre, yo te recomendaría un tamaño de 1 mega (1024*1024) , o puede que medio mega (512*1024). En cuanto a limitar el máximo y el mínimo, es evidente que tiene que ser mayo de cero , y máximo lo que aguante, si alguien le coloca un tamaño demasiado grande simplemente provocara una excepción indicando que no hay memoria suficiente.
Responder Con Cita
  #2  
Antiguo 09-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

O sea, que esto no va bien, entonces:

Código Delphi [-]
GetMem(Buffer,10*FBuffer);

Siendo "FBuffer" 1024 (el valor por defecto).

Y no sé si ya esto sea una pasada... un par de instrucciones por debajo tenemos:

Código Delphi [-]
BytesRead:= Stream.Read(Buffer^, 10*FBuffer);

¿Me he pasado de listo Seoane?

Por ahora el "buffer" por defecto sería de 1024. No habría máximo y tampoco mínimo... se supone a quien lo toca que sabe lo que hace.

Edito: Sí que habría mínimo: el buffer ha de ser mayor que cero.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 09-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Perfecto, veo que te diste cuenta de que otra instrucción había que cambiar.

Yo lo dejaría así:
Código Delphi [-]
GetMem(Buffer,FBuffer);
...
BytesRead:= Stream.Read(Buffer^, FBuffer);
Y limitaría el valor de FBuffer entre 1024 y 8*1024*1024, es decir entre 1KB y 8MB. Un rango bastante razonable.
Responder Con Cita
  #4  
Antiguo 09-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; pero yo siento darte la brasa (nunca mejor dicho, acaso, por la calor que hace... al menos por aquí), pero, no me termino de aclarar, y es que, como se echa de ver, no estoy muy puesto en esto (como en casi nada).

¡A ver si me aclaro! Antes de toda esta movida había una instrucción tal que:

Código Delphi [-]
GetMem(Buffer,10*1024);

Entonces, mi sin duda superior intelecto había barruntado esto:

Código Delphi [-]
GetMem(Buffer,10*FBuffer);

La propiedad "Buffer" valdría por defecto 1024, y todo quedaría entonces "como antes".

Ahora bien, si decimos que la propiedad Buffer vale 1024 (por defecto), entonces la anterior instrucción no es lo mismo que esta:

Código Delphi [-]
GetMem(Buffer,FBuffer);

Entonces la propiedad "Buffer" tendría que valer, por defecto, 10024...

¿No? Pues me lo explica, por favor.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 09-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
El tamaño del buffer es lo que esta dentro del GetMem. Tu te preguntaras por que utilizo 10*1024 y no 10240, pues siemplemente es una constumbre para distinguir a simple vista si son Kb, Mb, etc ...

En mi codigo utilizaba 10*1024 porque me parecio un tamaño razonable para una cadena de texto y archivos pequeños. Pero si se va a calcular algo realmente pequeño, puede utilizarse un buffer mas pequeño, y si vamos a calcular un archivo "grande" mejor un buffer mayor.

Lo que puedes hacer es esto otro:
Código Delphi [-]
GetMem(Buffer,FBuffer*1024);
De esta forma la propiedad FBuffer estaría en Kilobytes y seria mas fácil de manejar.
Responder Con Cita
  #6  
Antiguo 09-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Y se me olvidaba, según tienes el código, el tamaño del buffer determina cuando ocurre el evento OnWork. Cuanto mayor sea el buffer, los eventos OnWork serán menos y mas espaciados en el tiempo.
Responder Con Cita
  #7  
Antiguo 09-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vale. Pues me convence esto que dices. He renombrado la propiedad "Buffer" a "KBBuffer"... esperando que así el asunto se entienda mejor. Entonces, entiendo ahora que un buen valor por defecto para esta propiedad podría ser 512... ¿O tal vez 1024?

¿Qué me dices?
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 09-07-2007 a las 01:21:27.
Responder Con Cita
  #8  
Antiguo 09-07-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vaya... noto que si doy un valor a "KBBuffer" de 10 la aplicación se mueve mejor... no se atranca tanto, como si doy un valor de 1024 a dicha propiedad... de todos modos me he decidido por este último valor por defecto. Ya está también actualizado el invento. Gracias por todo Seoane.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como hacer un CD protegido para que no se pueda copiar federiconqn21 Varios 11 24-04-2007 05:52:07
Ofrecen 25 mdd para quien salve el planeta sakuragi La Taberna 11 12-02-2007 21:16:21
Como hacer para que un programa NO pueda ser cerrado desde el Task Manager? bustio Varios 6 25-05-2006 18:58:04
Para quien busque un curso de builder Picard C++ Builder 0 14-06-2004 00:06:04
Una pregunta para Kinobi o cualquier persona que pueda ayudar Markoz Firebird e Interbase 1 03-06-2003 19:51:18


La franja horaria es GMT +2. Ahora son las 20:30:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi