Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Convertir a entero una división de 2 enteros. (https://www.clubdelphi.com/foros/showthread.php?t=77727)

marcoszorrilla 22-02-2012 17:00:17

Convertir a entero una división de 2 enteros.
 
No he logrado convertir a entero una división de 2 enteros, es decir tengo dos campos 'Integer' y hago una divisón entre ellos y el resultado lo quiero guardar en otro campo también entero.

Lo he arreglado de la siguiente y chapucera manera.


Código Delphi [-]
procedure TDmPedido.IbDtsLinPedidosBULTOSChange(Sender: TField);
begin
DmPedido.IbDtsLinPedidosIMPORTE.Value:= DmPedido.IbDtsLinPedidosBULTOS.Value *
DmPedido.IbDtsLinPedidosFORMATO.Value * DmPedido.IbDtsLinPedidosPCOMREAL.Value;

DmPedido.IbDtsLinPedidosUNISKG.Value:=DmPedido.IbDtsLinPedidosBULTOS.Value *
DmPedido.IbDtsLinPedidosPESO.Value;

  if DmPedido.IbDtsLinPedidosUNISPALET.Value <> 0 then
  DmPedido.IbDtsLinPedidosPALETS.Value:=StrToInt(FormatFloat('0',int(DmPedido.IbDtsLinPedidosBULTOS.Value /
  DmPedido.IbDtsLinPedidosUNISPALET.Value)))
  else
  DmPedido.IbDtsLinPedidosPALETS.Value:=0;
end;

Un Saludo.

roman 22-02-2012 17:10:33

¿No tendrías que usar Trunc o Round?

// Saludos

egostar 22-02-2012 17:24:20

Esto no te sirve ?

Código Delphi [-]
DmPedido.IbDtsLinPedidosBULTOS.Value div DmPedido.IbDtsLinPedidosUNISPALET.Value

Saludos

marcoszorrilla 22-02-2012 17:24:21

Son influencias de otro lenguaje, tienes razón, ya está en marcha:

Código Delphi [-]
 if DmPedido.IbDtsLinPedidosUNISPALET.Value <> 0 then
  DmPedido.IbDtsLinPedidosPALETS.Value:=Trunc(DmPedido.IbDtsLinPedidosBULTOS.Value /
  DmPedido.IbDtsLinPedidosUNISPALET.Value)
  else
  DmPedido.IbDtsLinPedidosPALETS.Value:=0;

Un Saludo.

marcoszorrilla 22-02-2012 17:31:05

Eliseo, no me funciona tu código porque me da error.

Un Saludo.

egostar 22-02-2012 17:39:05

Cita:

Empezado por marcoszorrilla (Mensaje 425790)
Eliseo, no me funciona tu código porque me da error.

Un Saludo.

Ya veo, será por el .Value, lo bueno es que se solucionó con el trunc().

Saludos

Casimiro Notevi 22-02-2012 18:33:28

Cita:

Empezado por marcoszorrilla (Mensaje 425790)
Eliseo, no me funciona tu código porque me da error.
Un Saludo.

También habría que saber qué error es, que parecemos novatos :D

roman 22-02-2012 19:08:41

Cita:

Empezado por Casimiro Notevi (Mensaje 425795)
También habría que saber qué error es, que parecemos novatos :D

Han de ser esas influencias :rolleyes:

Cita:

Empezado por marcoszorrilla (Mensaje 425788)
Son influencias de otro lenguaje

// Saludos

Al González 22-02-2012 19:10:26

Cita:

Empezado por Casimiro Notevi (Mensaje 425795)
También habría que saber qué error es, que parecemos novatos :D

Remítelo a la guía de estilo, como haces con todo mundo. ;) (es broma, compas) :)

ecfisa 22-02-2012 19:11:36

Hola Marcos.

Sólo para agregar que la sugerencia de egostar funciona perfectamente cambiando Value por AsInteger.
Código Delphi [-]
  with DmPedido do
    IbDtsLinPedidosPALETS.AsInteger:= IbDtsLinPedidosBULTOS.AsInteger div IbDtsLinPedidosUNISPALET.AsInteger;

Saludos.

marcoszorrilla 22-02-2012 22:25:24

Gracias Ecfisa, me suponía como ya apuntó Eliseo que se debía a utilizar Value, pero como estaba trabajando y ya no quería hacer más pruebas lo dejé como apunté anteriormente.

En cuanto al error, era un error ambiguo ya que se producía en el else después de la instrucción, por lo tanto no di datos porque no los tenía y no podía perder tiempo en buscarlo, el mensaje fue más en deferencia con Eliseo que también se había molestado en buscar una solución como se ha visto a posteriori válida.

Gracias a todos.

Casimiro Notevi 22-02-2012 23:44:02

Cita:

Empezado por Al González (Mensaje 425799)
Remítelo a la guía de estilo, como haces con todo mundo. ;) (es broma, compas) :)

No, que me vaya a banear :D


La franja horaria es GMT +2. Ahora son las 13:27:27.

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