Hola.
Desconozco los valores que envías a las funciones, pero revisé a
GetToken y
GetTokenCount y de este modo me funcionan como se esperaría:
Código Delphi
[-]
function GetTokenCount( Cadena:string; Separador:Char ): Integer; overload;
var
Posicion:integer;
begin
Result := 0;
if Cadena <> '' then
begin
Posicion := Pos( Separador, Cadena );
while Posicion <> 0 do
begin
Delete( Cadena, 1, Posicion );
Posicion := Pos( Separador, Cadena );
Inc( Result );
end;
end;
end;
function GetToken( Cadena:string; Separador:char; Token:integer ): string; overload
var
Posicion:integer;
begin
while Token > 1 do
begin
Delete( Cadena, 1, Pos( Separador,Cadena ) );
Dec( Token );
end;
Posicion := Pos( Separador, Cadena );
if Posicion = 0 then
Result := Cadena
else
Result := Copy( Cadena, 1, Posicion-Length( Separador ) );
end;
Codigo de prueba:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
i,x: Integer;
begin
s := '';
for i := 100 to 110 do s := s+ IntToStr( i )+'%';
SetLength(s, Length( s )-1);
ListBox1.Items.Add( s );
ListBox1.Items.Add( StringOfChar('-', 43) );
x := GetTokenCount( s, '%' );
for i := 1 to x do ListBox1.Items.Add( GetToken( s,'%', i ) );
end;
Resultado:
Saludos