![]() |
¿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? |
Hola JXJ.
Cita:
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. |
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 |
Cita:
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. |
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? |
|
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.
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 |
Cita:
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