Ver Mensaje Individual
  #16  
Antiguo 14-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por roman Ver Mensaje
En esta versión, S[I+1] se sale de la cadena al final, lo cual puede ser inseguro. Supongo que por eso habías agrandado en 1 la longitud de la cadena en la versión anterior;...
Si exáctamente ese fué el motivo de aplicar esa precaución en las pruebas previas, pero luego recordé que no estaba tratando con un ShortString sino con un AnsiString por lo que no iba a tener problemas de desborde (excepto con un texto de largo 2^31). De todos modos agregar #0 es una buena medida.

De tanto escudriñar, también me encontré con una situación que no entiendo...
Haciendo,
Código Delphi [-]
var
  i : Integer;
  s : string;
begin
  s := 'prueba';
  Memo1.Lines.BeginUpdate;
  try
    for i := 1 to Length(s)+1000 do
      Memo1.Text := Memo1.Text + s[i];
  finally
    Memo1.Lines.EndUpdate;
  end;
end;
obtengo el resultado que me esperaba:


Sin embargo si hago,
Código Delphi [-]
var
  i : Integer;
  s, x: string;
begin
  s := 'prueba';
  x := '';
  for i := 1 to Length(s)+1000 do  x := x + s[i];
  Memo1.Text := x;
end;
obtengo este resultado:




Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita