Ver Mensaje Individual
  #7  
Antiguo 09-04-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita