Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿como definir tamaño de buffers? (https://www.clubdelphi.com/foros/showthread.php?t=73227)

JXJ 09-04-2011 06:53:09

¿como definir tamaño de buffers?
 
he encontrado que unos usan


Inbuf: Array[ 0..1023 ] of AnsiChar;

Inbuf: Array[ 0..1024 ] of AnsiChar;

entiendo que 8192 entre 1024 da 8

Inbuf: Array [0..8192] of AnsiChar;

Inbuf: Array [0..999999] of AnsiChar;

cual es la regla que se usa para definir el tamaño de un buffer?

ecfisa 09-04-2011 07:46:45

Hola JXJ.

Cita:

cual es la regla que se usa para definir el tamaño de un buffer?
Un buffer es una porción de memoria para almacenar temporalmente alguna información y no sé de la existencia de una regla general para definir su tamaño. El tamaño se define acorde al tipo de dato y a la conveniencia de cada aplicación a implementar.

Suponiendo que buscabas algo específico hice una búsqueda con "Inbuf: Array [0..999999] of AnsiChar;"

Y encontré este resultado: Librería hecha en Delphi que implementa la factura electronica de México (Comprobante Fiscal Digital).

Espero que sea lo que estas buscando.

Un saludo.

newtron 09-04-2011 09:19:48

Hola.

A mi me da que estás confundido con el concepto. En este caso Inbuf es el nombre de un array que declaras para usarlo posteriormente y [0..1023] quiere decir que vas a reservar para ese array 1024 posiciones que vas a usar posteriormente en tu programa. Esto se hace cuando sabes cuantas posiciones vas a necesitar posteriormente para tu tarea, en caso de no saberlo puedes declarar el array de forma dinámica sin indicar posiciones e ir incrementando las mismas según te vaya haciendo falta.

Espero que sea eso lo que preguntabas.

Saludos

JXJ 09-04-2011 16:05:55

Cita:

Empezado por newtron (Mensaje 396406)
Hola.

A mi me da que estás confundido con el concepto. En este caso Inbuf es el nombre de un array que declaras para usarlo posteriormente y [0..1023] quiere decir que vas a reservar para ese array 1024 posiciones que vas a usar posteriormente en tu programa. Esto se hace cuando sabes cuantas posiciones vas a necesitar posteriormente para tu tarea, en caso de no saberlo puedes declarar el array de forma dinámica sin indicar posiciones e ir incrementando las mismas según te vaya haciendo falta.

Espero que sea eso lo que preguntabas.

Saludos

si eso era lo que preguntaba ..
por que la mayoria declara sus arreglos de 0...1023 o 0....1024.

segun para soportar el tamaño del archivo.
pero yo tenia entendido que si declaras el arreglo de mayor tamaño
del que es requerido. te al usar el arreglo obtienes basura en los espacios extra
o el archivo llega incompleto.
se corrompe.

JXJ 09-04-2011 16:09:56

como se le hace para asignar el tamaño del arrary
de forma dinamica.
si la informaciona procesar la obtengo desde el memo1.lines o de un string?

Casimiro Noteví 09-04-2011 16:37:04

Busca en los foros por SetLength ;), ahí encontrarás lo que necesitas.

Lepe 09-04-2011 21:36:53

Siempre has de reservar el máximo posible (siempre y cuando esté entre unos límites razonables) para el dato que vas a almacenar.

Normalmente pasas un array con 1 o 2 kb de largo y la función te devuelve cual es el máximo que la función ha usado, por ende, si te devuelve 43, sólo pillas del array desde el cero al 42.

La mayoría de esas funciones añaden el carácter #0 en el índice 43 (o el que corresponda), que como sabes es el carácter nulo, el carácter que hace terminar un PChar en delphi. Los arrays son en realidad un Pchar, por tanto es compatible.

El párrafo anterior quiere decir que ese buffer puedes copiarlo con tranquilidad a un string de delphi que no obtendrás la basura que haya al final del buffer.

Código Delphi [-]
var aa: array[0..1023] of char;
     b:string;
begin
  funcion_usa_buffer(@aa);
  b := aa;
end;

Sé que hay varias funciones para "resetear una zona de memoria" creo una de ellas es fillchar y hay otras para bloques de memoria que no recuerdo horitamesmo...

baludos

newtron 10-04-2011 09:42:28

Cita:

Empezado por JXJ (Mensaje 396422)
si eso era lo que preguntaba ..
por que la mayoria declara sus arreglos de 0...1023 o 0....1024.

segun para soportar el tamaño del archivo.
pero yo tenia entendido que si declaras el arreglo de mayor tamaño
del que es requerido. te al usar el arreglo obtienes basura en los espacios extra
o el archivo llega incompleto.
se corrompe.

Es que una cosa que tienes que tener clara para declarar el array es la longitud que necesitas del mismo. Si lo tienes claro lo declaras con esa longitud porque lo vas a usar al completo, en caso contrario lo haces de forma dinámica y lo vas adaptando según vayas necesitando con la instrucción setlength como te decía el amigo Casimiro.

Saludos


La franja horaria es GMT +2. Ahora son las 11:35:16.

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