Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Error Array TTime (https://www.clubdelphi.com/foros/showthread.php?t=91571)

shadowdark93 07-03-2017 05:25:15

Error Array TTime
 
Hola gente que tal, estoy realizando una app que me permita calcular el tiempo de ejecucion de una accion repetitiva determinada en tiempo pero tengo algunos fallos ya que debo eliminar el valor maximo y el valor minimo contenido dentro del array max 20. Al menejar variables las cuales son de TTime no las puedo almacenar dentro del array o almenos poder mostrarlas, que debo hacer, agradezco su colaboracion.

Neftali [Germán.Estévez] 07-03-2017 09:27:47

Cita:

Empezado por shadowdark93 (Mensaje 514061)
Al menejar variables las cuales son de TTime no las puedo almacenar dentro del array o almenos poder mostrarlas

¿Porqué no puedes almacenarlas en un array?
¿Porqué no puedes mostrarlas?
¿Qué te impide definir una variable como esta?

Código Delphi [-]
var
  arr1:array of TTime;
  arr2:array of Double;  // equivalente

Te recomiendo que revises la guía de estilo, en el apartado que habla de cómo formular las preguntas.

shadowdark93 07-03-2017 23:15:31

cuando envio el dato del cronometro (now-horaInicial) para saber el tiempo exacto hago esto:
Código Delphi [-]
begin
    // Convierte la cantidad conteos en c
    c := strtoint(txtConteos.Text);
    // Convierte i en formato string y pasa como parámetro con formato
    i := FormatDateTime('hh.mm.ss.zzz', auxT);
    // validar codigo
    for x := 1 to c do
    begin
      vec[x] := auxT;
    end;

    ShowMessage(FormatDateTime('hh:mm:ss:zzz', vec[x]));

    Timer1.Enabled := false;
    Memo1.Lines.Add(FormatDateTime('hh:mm:ss:zzz',vec[x]));
    Timer1.Enabled := true;

pero el resultado del es siempre 00:00:00:000 en el mensaje pero en el memo si es el dato correcto

AgustinOrtu 07-03-2017 23:54:50

Que nivel de precision necesitas? Dias? Horas? Minutos? Los tipos TTime, TDate y TDateTime son en realidad alias de Double, y los numeros en coma flotante no son los mas adecuados para manejar precision, ya que se pueden perder digitos; aunque si son adecuados para manejar numeros "grandes"

Yo creo que lo mejor es utilizar enteros puros y luego "interpretarlos" como si fuesen milisegundos, segundos, minutos, o la unidad que te parezca.

Por lo general se utilizan enteros de 64 bits (UInt64, o Cardinal, que es un alias de UInt64 en Win32)

Hay soluciones ya hechas y funcionando en el lenguaje, dependiendo de tu version de Delphi, tenes la unidad System.Diagnostics la cual define una clase especial, TStopWatch

Para versiones de Delphi mas antiguas, si buscas por el foro vas a encontrar una solucion que utiliza la API de Windows; este truco simplifica un poco las cosas y hay un ejemplo

Si tu objetivo es aprender y queres solucionar y entender porque no te anda (lo cual me parece barbaro) necesitamos que publiques mas codigo para poder ver que anda mal.

Te recomiendo que busques material en el foro sobre depuracion, que es muy util para este tipo de cosas. No solo te hace mejor programador, sino que te sirve para solucionar problemas "tontos" vos mismo

shadowdark93 08-03-2017 00:31:24

bueno la verdad es que soy algo novato en el tema de programacion y mas en delphi, estoy utilizando Rad Studio Berlin pero no sabria con exactitud si estoy utilizando el tipo de dato correcto, ademas la aplicacion es para exportarla a android y no se si sirvan las librerias que me mencionas. voy a poner otro fragmento de codigo mas amplio para que entiendan mi caso.

https://drive.google.com/file/d/0By8...ew?usp=sharing

Gracias por sus respuestas

AgustinOrtu 08-03-2017 03:24:05

TStopwatch funciona en todas las plataformas

Creo que lo mejor es publicar el codigo directamente en el foro

shadowdark93 09-03-2017 01:32:03

Amigos ya resolvi mi problema, de antemano quiero decirles a todas las personas que escribieron muchas gracias por sus aportes.


La franja horaria es GMT +2. Ahora son las 21:22:22.

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