Ver Mensaje Individual
  #1  
Antiguo 09-06-2017
angelratza angelratza is offline
Registrado
NULL
 
Registrado: jun 2017
Posts: 8
Reputación: 0
angelratza Va por buen camino
Exclamation No se reconoce el signo de %, Pascal

Hola a todos, verán soy nuevo en esto de programar con delphi pascal, por lo que me acerco a ustedes con un problema.

Tengo un programa que tiene hechas funciones para el conteo y obtención de los valores de una cadena, pero el problema es que no me reconoce el símbolo de % como separador entre las partes de dicha cadena.
Les dejo el código para ver si alguien me puede ayudar a identificar el error que tengo y lograr que lo reconozca como un carácter para separar los valores.

Funciones utilizadas:
Código Delphi [-]
   function EsStrunNumero(NumStr : string) : bool;
   begin
    result := true;
    try
      StrToInt(NumStr);
    except
      result := false;
    end;
   end;

   function GetToken(Cadena:string; Separador:char; Token:integer):string; overload
   {
   Cadena     es la string en la que buscar el token
   Separador  es la string que separa cada token
   Token      es el número de token que buscamos

   Cadena     is the string in that look for the token
   Separador  is the token separator
   Token      is the desired token number
   }
   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;

   function GetTokenCount(Cadena:string; Separador:char):integer; overload;
   var
      Posicion:integer;
   begin
     Posicion:=Pos(Separador,Cadena);
     Result:=1;

     if Cadena <> '' then begin
       if Posicion <> 0 then begin
         while Posicion <> 0 do
         begin
           Delete(Cadena,1,Posicion);
           Posicion:=Pos(Separador,Cadena);
           Inc (Result);
         end;
       end;
     end else Result:=0;
   end;
Parte del programa con el conflicto:
Código Delphi [-]
       IF GetTokenCount(texto,'%') = 2 then //cuando hay 2 tokens con signo de %
          begin
            if (EsStrunNumero(GetToken(texto,'%',1))) and (EsStrunNumero(GetToken(texto,'%',2)))then
            begin
              idesc:= StrToInt(GetToken(texto,'%',1));//Con esta funcion se obtiene el 1er. token que es el 
                                                      //porcentaje de descuento y la colocamos a iDesc
              scve:= GetToken(texto,'%',2);   //Con esta Funcion se obtiene el 2o. token que es la clave de 
                                              //producto y se deposita en scve

                  reng:=Fventa.SGVenta.RowCount; //Parte de una rejilla en donde se muestran los datos
                  importdesc:=StrToFloat(Fventa.SGVenta.Cells[6,reng-1]); // Obtenemos el valor del importe 
                                                              // sin descuento

                  if idesc <> 0 then
                  begin
                    Desc:=1-idesc/100; //a 1 se resta el porcentaje de descuento para q Desc se multiplique por la cantidad
                    import:=importdesc*Desc;
                    Fventa.SGVenta.Cells[5,reng-1]:= IntToStr(idesc); // Descto
                  end;
              end; 
           end;
Agradezco de antemano el apoyo que dan en este sitio y quedo atento de sus comentarios para resolverlo.
Saludos.

Última edición por ecfisa fecha: 09-06-2017 a las 20:19:56. Razón: Agregar etiquetas [DELPHI] al código
Responder Con Cita