Cita:
Empezado por roman
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