Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Porcentaje de un Numero en un Tedit (https://www.clubdelphi.com/foros/showthread.php?t=73624)

ZiriusB 05-05-2011 18:24:28

Porcentaje de un Numero en un Tedit
 
Hola buenos dias, mi duda es la siguiente o mas bien mi pregunta;

Tengo un Tedit donde se mostrara un numero (Ej: 3) yo quiero sacarle a ese numero un porcentaje cualquiera... Por ejemplo, quiero saber cuanto es el 15% de ese numero...

¿Tienen alguna idea de como plantearlo? Agradeceria su ayuda...

oscarac 05-05-2011 18:30:57

dejame ver si entendi...
tienes un edit con un numero X y a ese numero X quieres sacarle un porcentaje Y que colocaras en otro edit me imagino

no tengo delphi a la mano en este momento
seria algo asi...


Código Delphi [-]
 
lblPorcentaje.Caption := StrtoInt(edtNumerox.text) * strtoint(edtPorcentajeY.Text) / 100

ZiriusB 05-05-2011 18:38:39

Ok planteare el problema completo...

Tengo 4 radiobutton y 1 te edit... en el TEDIT me mostrara el numero que seleccione en los radiobutton que van del 1 al 4...

Supongamos que mi seleccion sea el radiobutton 3, me colocara el 3 en el TEDIT

Código Delphi [-]
edit1.Text:=IntToStr(AdvOfficeRadioGroup1.ItemIndex + 1);

A ese TEDIT yo quiero sacarle el porcentaje "X" supongamos que el porcentaje que quiero sacarle a ese especificamente es el 15%

Matematicamente seria algo asi: 3*15/100 = 0.45

oscarac 05-05-2011 18:41:39

y el porcentaje? donde lo tienes? o lo asignas directamente

ZiriusB 05-05-2011 18:44:30

El porcentaje sera un valor fijo para siempre, mi idea era asignárselo en el mismo código... ¿que recomiendas?

oscarac 05-05-2011 18:50:35

yo te recomendaria que el porcentaje no sea fijo (lo unico fijo que existe en la vida es la muerte)

y podrias hacerlo asi como te dije, colocar el porcentaje en otro edit

Código Delphi [-]
 
lblPorcentaje.Caption := inttostr(StrtoInt(edtNumerox.text) * strtoint(edtPorcentajeY.Text) / 100)

ZiriusB 05-05-2011 18:55:38

Código Delphi [-]
label1.Caption := inttostr(StrtoInt(edit1.text) * strtoint(edit5.Text) / 100)

Me salta este error:
"[DCC Error] Unit1.pas(50): E2250 There is no overloaded version of 'IntToStr' that can be called with these arguments"

Lo del porcentaje es un porcentaje fijo para cada item...por eso digo que sera asi, igual tomare tu sugerencia.

Si le quito el InttoStr me salta este error:

[DCC Error] Unit1.pas(50): E2010 Incompatible types: 'string' and 'Extended'

ecfisa 05-05-2011 20:16:20

Hola.

Código Delphi [-]
  Label1.Caption := FloatToStr(StrToFloat(Edit1.text) * StrToFloat(Edit5.Text) / 100);

Saludos.

oscarac 05-05-2011 20:24:35

Cita:

Empezado por ecfisa (Mensaje 399064)
Hola.


Código Delphi [-]
Label1.Caption := FloatToStr(StrToFloat(Edit1.text) * StrToFloat(Edit5.Text) / 100);





Saludos.

por eso dije... algo parecido... :rolleyes::rolleyes:

Caral 05-05-2011 20:31:08

Hola
Código Delphi [-]
var v1,v2,v3 : Real;
begin
v1:= StrToFloat(Edit1.Text);
v2:= StrToFloat(Edit5.Text);
v3:= 100;
Label1.Caption := FloatToStr(v1 * v2 / v3);
end;
Saludos
PD: Vaciaciones sobre el mismo tema.:)

ecfisa 05-05-2011 20:42:23

Hola oscarac.
Cita:

por eso dije... algo parecido...
Si por supuesto, al menos a mí, me quedó bién claro que era un ejemplo orientativo . ("no tengo delphi a la mano... seria algo asi:")

Pero como lo aplicó textualmente, le indiqué el por que le estaba dando error.

Un saludo.

ZiriusB 05-05-2011 22:17:40

Gracias por sus respuestas, me quedo asi:

Código Delphi [-]
procedure TForm1.AdvOfficeRadioGroup2Click(Sender: TObject);
begin
edit2.Text:=IntToStr(AdvOfficeRadioGroup2.ItemIndex + 1);
edit7.Text := FloatToStr(StrToFloat(Edit2.text) * 15 / 100);
end;

Colocando el Procentaje Fijo para probar...lo probe del otro modo que me sugirio Oscarac y tambien funciono, ahora quiero sumar esos t edit y mostrar el resultado en uno EDTTOTAL:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
edit4.Text:= Inttostr(StrToInt(edit3.Text) +  StrToInt(edit7.Text)  +  StrToInt(edit8.Text));
end;

Pero me arroja este error:

Cita:

First chance exception at $7C812AEB. Exception class EConvertError with message '''1,2'' is not a valid integer value'. Process Project1.exe (648)
Seria bueno una breve explicación de lo que estoy haciendo mal, para aprender..un saludo y gracias por sus respuestas!

Caral 05-05-2011 22:22:23

Hola
1,2 es un numero que tiene decimales, en este caso, un decimal el numero 2.
Por eso la operacion que hiciste da error, usas integer que no contiene decimales, tienes que usar float que si los permite, asi:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
edit4.Text:= Floattostr(StrToFloat(edit3.Text) +  StrToFloat(edit7.Text)  +  StrToFloat(edit8.Text));
end;
Saludos

ZiriusB 10-05-2011 20:00:01

Gracias, mil gracias por responder y aclarar mis dudas he estado trabajando en eso y he aprendido...

Una vez que tengo el numero en dicho TEDIT ( tengo 13 TEDIT) he intentado con el COMPONENT COUNT mostrar el resultado de la suma de esos TEDIT y dividirlos entre el numero de TEDIT (13)

Código Delphi [-]
var
  c, i, j, f: integer;
  r: Double;
......
  
r:= 0;
c:= 0;
  for i:= 0 to ComponentCount -1 do
   if (Components[i] is Tedit) and
      (Tedit(Components[i]).text > -1) then
   begin
     r:= r + StrToFloat(Tedit(Components[i]).text [Tedit(Components[i]).text]);
     Inc(c);
   end;
    if c > 0 then
    npromedio.Text:=(FormatFloat('#,##0.##', r/c));

Eso lo coloco dentro de cada TEDIT evento ONCHANGE, use como base un ejemplo que me dieron hace tiempo para un COMBOBOX...


La franja horaria es GMT +2. Ahora son las 18:35:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi