Hola, he visto este hilo y me parece interesante. Creo que tanto 'Pepe' como la fecha pueden aparecer en el volcado de memoria del programa de Seoane por dos razones, espero no equivocarme.
'Pepe' está escrito de manera estática en la función Resultado, por lo tanto no hay manera de quitarlo de la memoria. Esto no sería un problema para tu aplicación, ya que la clave del cliente no estaría escrita en el código de la aplicación.
El otro problema que veo es la pila del programa, cuando se hace la siguiente llamada:
Código Delphi
[-]
StrLCopy(Str,PChar('Pepe'+DateToStr(Time)),L);
El valor
'Pepe'+DateToStr(Time) se copia en la pila de llamadas de la aplicación, y permanecerá ahi hasta que otras llamadas sobreescriban estos datos en la pila.
Puedes comprobarlo de la manera siguiente:
En el código de Seoane haces una implementación de StrLCopy, algo así
Código Delphi
[-]
Procedure StrLcopy(dest, org : PChar; len : Integer);
begin
while org^ <> #0 do
begin
dest^ := org^;
Inc(dest);
Inc(org);
end;
dest^ := #0;
end;
de manera que uses esta función en vez de la original de delphi. Pones un punto de ruptura dentro de la función, vas a la ventana "Call Stack". Ahí verás el valor tanto de 'Pepe' como la fecha.
La solución, creo que podría ser una llamada a una función recursiva, justo después de la llamada a StrLCopy, para que sobreescriba la pila. La función debe ser llamada las veces que hagan falta para borrar los datos de la pila. Algo así:
Código Delphi
[-]
procedure Resultado(Str: PChar; L: Integer);
procedure VamosAContarAlReves(n : integer);
begin
if n > 0 then
VamosAContalAlReves(n - 1);
end;
begin
StrLCopy(Str,PChar('Pepe'+DateToStr(Time)),L);
VamosAContarAlReves(100);
end;