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 22-05-2004
Avatar de Picard
Picard Picard is offline
Miembro
 
Registrado: may 2004
Ubicación: Palamos
Posts: 23
Poder: 0
Picard Va por buen camino
Manejo de cadenas en c++ builder

Hola compañeros,estoy realizando una aplicacion que lee datos del puerto serie,concretamente de un gps,puedo ver los datos recibidos en un Tmemo,pero no consigo manejar las cadenas y subcadenas recibidas para pasar los valores a unos tlabel, he utilizado el metodo pos,pero no acaba de convencerme por su complejidad,aparte de algunos fallos inexplicables que me da,alguien sabe algun sistema mejor? o de algun componente que me permita manejar estas cadenas?
gracias.
Responder Con Cita
  #2  
Antiguo 25-05-2004
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Has probado con expresiones regulares, existen muchos componentes que te permiten utilizarlas. igual con esto te apañas mejor.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #3  
Antiguo 27-05-2004
Sonic Sonic is offline
Miembro
 
Registrado: may 2004
Posts: 40
Poder: 0
Sonic Va por buen camino
Mi proyecto fin de carrera fue diseñar una aplicación completa para la gestion, configuración y monitorización de un receptor de GPS que se comunicaba por puerto serie, quizá te pueda ayudar. Pero no entiendo muy bien tu pregunta, recibes los datos en formato binario o en formato ascii? Tienes que concretar un poco mejor lo quieres hacer. Espero poder ayudarte.

Última edición por Sonic fecha: 27-05-2004 a las 11:47:03.
Responder Con Cita
  #4  
Antiguo 27-05-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Cita:
Empezado por Picard
he utilizado el metodo pos,pero no acaba de convencerme por su complejidad,aparte de algunos fallos inexplicables que me da
¿Qué complejidad tiene el método Post?
Si nos explicas esos errores que tu consideras "inexplicables" o lo que no entiendes del método, quizá te podemos ayudar. Lo que sí te garantizo es que esa función no tiene ninguna anomalía!!!!
__________________
E pur si muove
Responder Con Cita
  #5  
Antiguo 28-05-2004
Avatar de Picard
Picard Picard is offline
Miembro
 
Registrado: may 2004
Ubicación: Palamos
Posts: 23
Poder: 0
Picard Va por buen camino
Código:
void __fastcall TRead::DisplayIt() 
{ 
	   //Muestra las cadenas recibidas. 
	   frmPrincipal->Flujodedatos->SetSelTextBuf(InBuff); 
	   AnsiString strInBuff = AnsiString(InBuff); 
	   int pos; 

	   if(strInBuff.SubString(1, 6) == "$GPRMC") 
		 { 
		 //Quitamos la etiqueta 
		 strInBuff = strInBuff.SubString(7, strInBuff.Length() - 7); 
		 //Primera coma, no me interesa el dato	//091329 
		 pos = strInBuff.Pos(","); 
		 strInBuff = strInBuff.SubString(pos +1, strInBuff.Length()-pos-1); 
		 //Segunda, lo mismo					   //A 
		 pos = strInBuff.Pos(","); 
		 strInBuff = strInBuff.SubString(pos +1, strInBuff.Length()-pos-1); 
		 //Tercera, ahora aparece la ¿latitud?	 //4151.249 
		 pos = strInBuff.Pos(","); 
		 frmPrincipal->lblLatPos->Caption = strInBuff.SubString(1, pos - 1); 
		 strInBuff = strInBuff.SubString(pos +1, strInBuff.Length()-pos-1); 
		 //Ahora viene una N ¿latitud tb? (se lo añado a Latitud) 
		 pos = strInBuff.Pos(","); 
		 frmPrincipal->lblLatPos->Caption = Latitud + strInBuff.SubString(1, pos - 1); 
		 strInBuff = strInBuff.SubString(pos +1, strInBuff.Length()-pos-1); 
		 // 
		 ... 
		 } 
}
Donde InBuff es el Buffer de entrada de datos y flujodedatos es un TMemo por donde visualizo las cadenas nmea

$GPGLL,4151.249,N,00317.047,E,091326,A*2D
$GPRMB,V,,,,,,,,,,,þ*6ö
$GPRMC,091326,A,4151.249,N,00317.047,E,002.0,291,230204,000,E*7E
$GPVTG,274,T,274,M,001.9,N,003.5,K*40
$GPAAM,V,V,,N,*38
$GPAPB,A,A,,,N,V,V,,M,,,M,,M*47
$GPBWC,091328,,,,,,T,,M,,N,*17
$GPGGA,091328,4151.249,N,00317.046,E,1,04,03.0,-0022,M,50,M,,*65
$GPGLL,4151.249,N,00317.046,E,091328,A*22

Estas son las cadenas nmea que recibo. los errores que me dan son los siguientes, el caption de los Tlabel desaparece al cabo de unos instantes de ser recibidos, y no siempre consigo pasar los parametros deseados a los caption de los tlabel,aparece informacion no deseada.
gracias
Responder Con Cita
  #6  
Antiguo 28-05-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No parece nada complejo, son campos delimitados por comas. No te recomiendo hacer algo tan estático como lo que estas programando, yo utilizaría un TStrings para ahorrar trabajo:

Prueba esto:
Código:
Memo1->Lines->CommaText = "$GPGGA,091328,4151.249,N,00317.046,E,1,04,03.0,-0022,M,50,M,,*65";
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 29-05-2004
Avatar de Picard
Picard Picard is offline
Miembro
 
Registrado: may 2004
Ubicación: Palamos
Posts: 23
Poder: 0
Picard Va por buen camino
Podrias explicarme como podria hacer el tstrings?
Responder Con Cita
  #8  
Antiguo 29-05-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Cita:
Empezado por Picard
Podrias explicarme como podria hacer el tstrings?
¿has probado a hacer lo que te comenta?

Ahí está todo explicado!!!
__________________
E pur si muove
Responder Con Cita
  #9  
Antiguo 29-05-2004
Avatar de Picard
Picard Picard is offline
Miembro
 
Registrado: may 2004
Ubicación: Palamos
Posts: 23
Poder: 0
Picard Va por buen camino
Lo he intentado ,pero por mi bajo nivel de ingles y mi poca experiencia programando me quedo atascado. pongo u tlabel,y un timer, en ontimer posngo:
Código:
 label1->caption = Flujodedatos->lines->commatext	... y aqui me quedo atascado
Responder Con Cita
  #10  
Antiguo 30-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
el bajo nivel de ingles no es pretexto, siempre que se tenga disposición y ayuda de un traductor o diccionario ingles/español. Podes usar el traductor en línea de google, por ejemplo...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


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


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