Ver Mensaje Individual
  #2  
Antiguo 09-06-2017
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
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);  // 100%101%...%110

  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
__________________
Daniel Didriksen

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