Ver Mensaje Individual
  #3  
Antiguo 09-06-2017
angelratza angelratza is offline
Registrado
NULL
 
Registrado: jun 2017
Posts: 8
Reputación: 0
angelratza Va por buen camino
Gracias ecfisa por responder , y veras tengo un campo TEdit desde donde se están ingresando los valores de la variable "texto", pero al momento de ejecutar la función de GetTokenCount esta no reconoce el signo de % como un separador, si no lo toma como si estuviera toda la cadena en un solo valor.

Comparto parte del código en donde se hace esto:

Código Delphi [-]
procedure TFVenta.EdVentaKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  idesc, reng, icant, grs, I:integer;
  scve, texto, import2, flag:string;
  Desc, import, importotal, importdesc:real;
begin
  if key = vk_RETURN then // al momento de dar enter sobre el campo en de donde se obtienen los valores....
  begin
    if FVenta.Caption <> 'Devolucion de Productos' then /// verifica que estemos en el form correcto.
    begin
      if Fventa.EdVenta.Text = '' then
      begin
        FVenta.EdGramos.SetFocus;  // si esta vació el campo lo manda al siguiente campo del formulario
      end
      Else
      begin
        texto:=FVenta.EdVenta.Text; // si no esta vacio toma los datos escritos en el campo TEdit p/e: 10%251025

         IF GetTokenCount(texto,'%') = 2 then //cuando hay 2 tokens con signo de %
          begin
            if (EsStrunNumero(GetToken(texto,'%',1))) and (EsStrunNumero(GetToken(texto,'%',2)))then // verifica que sean numeros los valores ingresados
            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

                  if idesc <> 0 then // si el descuento a aplicar no es 0 se realizan las operaciones
                  begin
                    Desc:=1-idesc/100; //a 1 se resta el porcentaje de descuento para q Desc se multiplique por la cantidad
                    import:=importdesc*Desc; // se aplica el descuento al importe actual
                    Fventa.SGVenta.Cells[5,reng-1]:= IntToStr(idesc); // se toma el valor del descuento para mostrarlo
                  end;

                  import2:=FormatFloat('#,##0.00',import); // se le da formato al resultado del importe ya con descuento aplicado
                  Fventa.SGVenta.Cells[6,reng-1]:= import2; // se muestran los datos del resultado del importe
            end;
          end;
       end;
     end;
  end;
end;

que crees que pudiera ser que no me reconozca el signo como un separador, por que veo que en la prueba que realizaste si que lo reconoce como un separador.
Saludos.

Última edición por Casimiro Notevi fecha: 09-06-2017 a las 23:13:46.
Responder Con Cita