Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-01-2018
lago lago is offline
Miembro
 
Registrado: nov 2015
Posts: 40
Poder: 0
lago Va por buen camino
Hola Neftalí, gracias por responder tan rápido y por tu ejemplo! más o menos es lo que he hecho. Mi problema es que necesito un DBGrid con tooooodos los puntos independientemente del track que sea.

En tu ejemplo hay:

T6758644-0
T6758644-1
T6758644-2 ... etc

Cada uno de ellos contiene puntos de la ruta, cuando pincho en cada uno , en tu DBGrid4 me muestra los puntos correspondientes a ese track.

El tema sería saber si hay alguna manera de mostrarlos todos en un DBGrid sin recorrerlos a mano uno a uno? Para el programa que estoy haciendo necesito simplemente eso, un DBGrid con todos los puntos de un GPX, independientemente del track donde esten.

Muchas gracias por tu ayuda!
Responder Con Cita
  #2  
Antiguo 09-01-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.293
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por lago Ver Mensaje
Hola Neftalí, gracias por responder tan rápido y por tu ejemplo! más o menos es lo que he hecho. Mi problema es que necesito un DBGrid con tooooodos los puntos independientemente del track que sea.
Directamente no.
Pero se solventa realizando iun recorrido de todos los segmentos y a su vez un recorrido de todos los puntos de cada segmente.
Puedes usar un TClientDataset, pore ejemplo, para almacenarlos todos.

Algo así:

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
begin
  cdsAllPoints.CreateDataSet;
  cdsAllPoints.OPen;

  cdsSegment.First;
  while (not cdsSegment.Eof) do begin
    cdsPuntos.First;
    Memo1.Lines.Add('Segmento: ' + cdsSegment.FieldByName('name').AsString);
    Memo1.Lines.Add('   ->' + IntToStr(cdsPuntos.RecordCount) + ' puntos');
    while (not cdsPuntos.Eof) do begin
      // Añadirlo ---------------------------
      cdsAllPoints.Append;
      cdsAllPoints.FieldByName('lat').AsString := cdsPuntos.FieldByName('lat').AsString;
      cdsAllPoints.FieldByName('lon').AsString := cdsPuntos.FieldByName('lon').AsString;
      cdsAllPoints.FieldByName('ele').AsString := cdsPuntos.FieldByName('ele').AsString;
      cdsAllPoints.FieldByName('time').AsString := cdsPuntos.FieldByName('time').AsString;
      cdsAllPoints.Post;
      //-------------------------------------
      cdsPuntos.Next;
    end;
    cdsSegment.Next;
  end;
  Memo1.Lines.Add('TOTAL DE PUNTOS: ' + IntToStr(cdsAllPoints.RecordCount));
end;

cdsAllPoints es un TClientDataset con 4 campos (lat, lon, ele y time).

Por lo que he visto no es que sea al perder señal, sino cada 500 puntos.
Muchos dispositivos antiguos (sobre todo Garmin que se consideran estandard) almacenaban como máximo 500 puntos por track. Sea uno de estos o sea uno nuevo que lo haga por compatibilidad, el tuyo está generando diferentes segmentos cuando llega a ese límite.

Crea un nuevo dataset como te he dicho y con ese procedimiento puedes hacer el recorrido.
El resultado es el siguiente:

-------------------------------
Segmento: T6758644-0
->500 puntos
Segmento: T6758644-1
->500 puntos
Segmento: T6758644-2
->500 puntos
Segmento: T6758644-3
->500 puntos
Segmento: T6758644-4
->500 puntos
Segmento: T6758644-5
->500 puntos
Segmento: T6758644-6
->500 puntos
Segmento: T6758644-7
->357 puntos

TOTAL DE PUNTOS: 3857


-------------------------------
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-01-2018
lago lago is offline
Miembro
 
Registrado: nov 2015
Posts: 40
Poder: 0
lago Va por buen camino
Genial! muchísimas gracias ! nunca había usado esos componentes, me has ayudado mucho!

Cita:
Por lo que he visto no es que sea al perder señal, sino cada 500 puntos.
Muchos dispositivos antiguos (sobre todo Garmin que se consideran estandard) almacenaban como máximo 500 puntos por track. Sea uno de estos o sea uno nuevo que lo haga por compatibilidad, el tuyo está generando diferentes segmentos cuando llega a ese límite.
En mi caso tengo un igotU GT 800 Pro, y por lo que he podido probar únicamente crea un track nuevo al perder la señal. He podido comprobarlo por que rastreando los últimos puntos que guarda de un track me coincide en túneles o en el medio del monte profundo.
De hecho, probándolo cerca de casa establezco el refresco de posición a 1 segundo y tengo GPX de un solo track y 3500 puntos por ejemplo.

Por ejemplo en el último GPX de unas 8 horas...

Track: 20180107-123330(1)
->443 puntos
Track: 20180107-123330(2)
->244 puntos
Track: 20180107-123330(3)
->1689 puntos
Track: 20180107-123330(4)
->631 puntos
....

Track: 20180107-123330(22)
->2 puntos
Track: 20180107-123330(23)
->1535 puntos
TOTAL DE PUNTOS: 5437

El caso es que ya funciona con múltiples tracks, y con DBGrid1->DataSource->DataSet->EnableControls(); y DBGrid1->DataSource->DataSet->DisableControls(); gana mil en velocidad

Muchas gracias por todo Neftalí!

Un saludo!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al importar fichero txt jafera Varios 28 14-07-2014 16:30:34
DELPHI6 Importar fichero codificado UTF-8 a Dbase Jose Manuel Varios 0 16-05-2011 18:46:14
Importar fichero XML cincosoft OOP 1 08-02-2009 10:29:58
Importar fichero .dat desde cobol julian_ch Varios 0 08-08-2005 17:43:17
importar fichero consumo telefonica tonid Varios 3 11-09-2003 09:49:28


La franja horaria es GMT +2. Ahora son las 19:42:46.


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
Copyright 1996-2007 Club Delphi