[Lazarus-es] uso de SetLength

Jesus Reyes A. jesusrmx en gmail.com
Mie Jul 20 21:08:35 CEST 2016


En Wed, 20 Jul 2016 14:02:05 -0500, Jesus Reyes A. <jesusrmx en gmail.com>  
escribió:

> 1 function vbSplit(S: string; Delimiter: char): TStrArray;
> 2 var
> 3   C: integer;
> 4 begin
> 5   repeat
> 6     SetLength(Result, Length(Result) + 1);
> 7     C := Pos(Delimiter, S);
> 8     if C = 0 then
> 9       C := Length(S) + 1;
> 10     Result[Length(Result) - 1] := Copy(S, 1, C - 1);
> 11     Delete(S, 1, C);
> 12   until Length(S) = 0;
> 13 end;
>
> Según lo anterior, la línea 6 Length(Result) es indefinido (para todo  
> propósito "indefinido" aquí se >refiere a un detalle interno que depende  
> de la implementación actual en el compilador). En mi opinión >SetLength  
> se esta utilizando correctamente solo que antes que nada el resultado  
> debe ser inicializado >y para ello basta insertar entre las lineas 5 y 6  
> un SetLength(Result, 0); y listo.

Perdón, obviamente me he equivocado, no es entre las líneas 5 y 6 sino  
entre las líneas 4 y 5.

Jesus Reyes A.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20160720/514d3e11/attachment.html>


More information about the Lazarus-es mailing list