FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
¿Cómo cortar cadenas en Delphi 7?
Tengo en una variable con unas cadenas que me entrega el radio de una sola vez y quiero dividir esa cadena, en 5 cadenas y cada cadena tenerla en una nueva variable.
Esta lista de cadena la veo en un Memo #PO0 #SQS #EM0 #FT0715000 #FR0711200 Ahora La variable Str tengo esta cadena #PO0 #SQS #EM0 #FT0715000 #FR0711200 Entre cada cadena hay un cambio de línea y un enter, eso lo veo con un monitor de puerto es decir el radio me envía #PO0#13#10 #SQS#13#10 Lo que necesito hacer es cortar la cadena en 5 y pasarla a 5 variables, es decir Variables Power, SQ, Modo, FTX y FRX y en ese proceso quitarle el sino de numero (#) de las 3 primera variables y de las dos ultima quitarle (#FT y #FR) que viene delante. Una ves hecho esto con las tres primeras variable la usare para: ejemplo
Con las dos ultima pasarla a un edit: Edit1.Text := Edit1.Text + FTX; Ahora ajunto la última idea que estuve probando que me funciona en parte, pero no sé como asignar el resultado a las 5 nuevas variables
De esta manera logro obtener que me muestre 5 mensajes así: PO0 SQS EM0 FT0715000 FR0711200 solo me faltaría quitarle a la dos ultima de FR y FT el numero es variable pero siempre tendrá es formato de 7 caracteres. ¿Como pudiera pasar ese resultado a las 5 variables? que les comente, o si pueden decirme otra manera de lograr lo que quiero. Muchas gracias de antemano.. Última edición por CM6ISG fecha: 01-03-2015 a las 04:16:58. Razón: Correcion de Etiqueta |
#2
|
||||
|
||||
Hola CM6ISG y bienvenido a Club Delphi
Como es costumbre con los nuevos integrantes te invitamos a leer nuestra guía de estilo. Si interpreté bién tu consulta podes hacer: Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
|||
|
|||
Hola Necesito ayuda con Cortar Cadenas en Delphi 7.
Gracias colega por tu respuesta, tan rápido.
Mas meno esa sería la idea pero deja hacerte más precisiones de lo que quiero lograr, Mira yo estoy usado CportLib y el me devuelve a través del puerto Serial una Variable Str con una cadena de caracteres de mi Radio de HF esa cadena tiene esta estructura vista en un memo #PO0 #SQS #EM0 #FT0715000 #FR0711200 Y en un Edit se vería así #PO0#SQS#EM0#FT0715000#FR0711200 Lo que necesito es separar esta cadena en 5 cadenas y asignarla a 5 nuevas variables para de ahí seguir yo con el resto de la programación. Ahora #POX #SQX #EMX #FTXXXXXXX #FRXXXXXXX fíjate en el detalle te puse (X) ese dato varia en depende de la frecuencia del radio, modo potencia, etc. Lo otro seria como cambio ShowMessage(lCampos.Text); en su lugar necesito 5 variables con cada una de sus cadenas. Ejemplo: Power:=(‘POX’) Qsl:=(‘SQX’) Modo:=(‘EMX’) FTX:=(‘XXXXXXX’) FTR:=(‘XXXXXXX’) Muchas gracias de antemanos Última edición por CM6ISG fecha: 01-03-2015 a las 23:26:18. Razón: Rectificado el texto |
#4
|
||||
|
||||
CM6ISG,
Cita:
Revisa este código: El código anterior en Delphi 7 sobre Windows 7 Professional x32, Simula la lectura de un puerto serial separando la misma en 5 variables y visualizando esta por diferentes medios, como se muestra en la siguiente imagen: Espero sea útil Nelson. Última edición por nlsgarcia fecha: 02-03-2015 a las 01:52:21. |
#5
|
|||
|
|||
Hola Necesito ayuda con Cortar Cadenas en Delphi 7
Saludos: Gracias por acudir en mi ayudad, hice la simulación y todo perfecto, exactamente eso es lo que necesito hacer. Pero cuando fui a implementarlo entre las propiedades y funciones del ComPort que tengo no encuentro (Output_CportLib), la versión que tengo es ComPort Library ver. 2.64, estoy usado Delphi 7, Windows 7 Professional x32
Use ComPort1.ReadStr, que la que he probado y me funciona, A la hora de compilar me da el siguiente error Project Catsimulado.exe raised exception class EStringListError with message ‘List index out bounds (1)’. Process stopped. Use Step or run to continue. no logro determinar donde esta el error.
Gracias colega por tu respuesta, tan rápido. Última edición por CM6ISG fecha: 02-03-2015 a las 06:15:22. Razón: Arreglando etiquetas |
#6
|
||||
|
||||
Hola.
Cita:
Pero si es factible la reutilización de esas variables tal vez te convenga encapsularlas en un registro. Eso te permitiría enviar todos los valores en un solo parámetro, como por ejemplo:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#7
|
||||
|
||||
Hola CM6ISG.
Cita:
Lo primero es ver que valor contiene la cadena, Str, que obtuviste en la línea eso lo podes hacer con un simple ShowMessage. Lo segundo y principal es verificar que no estes indizando posiciones inexistentes, eso lo podes verificar del siguiente modo: Si el valor mostrado es menor a 4, valor que utilizas en la línea: se producirá ese error. Si es menor a 3 será en la anterior y así sucesivamente. Un caso que produciría el error que mencionas se puede ver en este ejemplo: Como surge a simple vista luego de obtendremos 4 cadenas que serán agregadas en el TStringList en las posiciónes 0,1,2,3; cuando hagas referencia a lCampos[4]... Piff !!! Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
CM6ISG,
Cita:
Cita:
Te comento: 1- Output_CportLib es una constante creada para simular la lectura de un Puerto Serial, no forma parte de la librería ComPort Library. 2- Para resolver el error List index out bounds, te sugiero hacer un debug de tu aplicación y seguir las indicaciones del Msg #7. Espero sea útil Nelson. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
como puedo cortar un string? | avrils | Varios | 2 | 07-03-2011 22:24:12 |
¿Como puedo cortar el form show? | silvana | Varios | 1 | 05-08-2008 15:30:29 |
Cortar cadenas por la derecha | VRO | Varios | 4 | 22-09-2004 16:30:38 |
Como cortar filtrado | miguelb | Varios | 4 | 28-11-2003 17:02:57 |
como cortar texto de un edit | superhopi | Impresión | 1 | 10-06-2003 13:03:03 |
|