<!DOCTYPE html><html><head>
<style type="text/css">body { font-family:'Courier New'; font-size:13px}</style>

<style type="text/css">body { font-family:'Courier New'; font-size:13px}</style>
</head>
<body>En Wed, 20 Jul 2016 14:02:05 -0500, Jesus Reyes A. <jesusrmx@gmail.com> escribió:<br><br><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div> 1 function vbSplit(S: string; Delimiter: char): TStrArray;<br> 2 var<br> 3   C: integer;<br> 4 begin<br> 5   repeat</div><div> 6     SetLength(Result, Length(Result) + 1);</div><div> 7     C := Pos(Delimiter, S);</div><div> 8     if C = 0 then</div><div> 9       C := Length(S) + 1;</div><div>10     Result[Length(Result) - 1] := Copy(S, 1, C - 1);</div><div>11     Delete(S, 1, C);</div><div>12   until Length(S) = 0;</div><div>13 end;</div><div><br></div><div>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.</div></blockquote><div><br></div><div>Perdón, obviamente me he equivocado, no es entre las líneas 5 y 6 sino entre las líneas 4 y 5.<br><br>Jesus Reyes A.</div></body></html>