![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Recorrer un string y actuar segun palabras leidas
Hola a todos soy muy novato en esto de Delphi, he leido varios tutos de los que hay por internete pero cada vez que trato de hacer algo que está fuera de lo que pone en los tutos me doy de frente contra un muro.
Estoy haciendo un pequeño programilla, para uso personal, para aprender, pero me surgen mil y un problemas que los voy solventando a medida que me encuentro con ello pero me resulta muy dificil, si bien es cierto que todo el tema del entorno grafico y el uso de las componentes es mas o menos intuitivo, el tema de picar codigo me resulta dificilisimo, para poneros en antecedentes apenas he programado antes de ponerme con Delphi, salvo alguna cosilla en un Pseudo Basic en unas tarjetas de controlar motores, o servos o algo así. El problema principal con el que me encuentro es que no se muy bien como moverme por dentro de un String, uno de los problemas que no he sabido solucionar es con la siguiente secuencia Tengo una Form con dos Memos (Memo1, Memo2), en uno cargo un archivo y quiero buscar una linea en la que pone 'SECUENCIAS', una vez encontrada la linea y a partir de esa palabra seguiran otras como por ejemplo UNO y TRES, lo que pretendo hacer es una vez encontrada la linea de secuencias en funcion de las palabras que sigan escribir en el Memo2 por ejemplo si leo DOS escribir "Activando secuencia 2", pero no consigo hacerlo, en principio mediante Pos(cadena, Memo1.text) encuentro la posicion donde comienza SECUENCIAS, pero luego cuando intento desplazarma por el Sting para tratar de leer cual es la palabra que viene a continuacion me pierdo. Alguien me puede ayudar con un codigo de ejemplo para tratar de hacer lo anterior. En resumen, me ayudaria un código que lea un Memo donde pone los siguiente: Bla bla bla SECUENCIA DOS TRES bla bla ... encuntre la linea donde pone SECUENCIA, lea las siguientes palabras y es escriba en otro memo "Activando secuencia X" donde X es la palabra que ha leido. Como he dicho llegar hasta la posicion de SECUENCIA lo tengo resuelto, el problema es ¿como leo las palabras que le siguen? MUCHISIMAS GRACIAS POR ADELANTADO |
#2
|
||||
|
||||
Hola vcs, si esta así como dices donde en la línea esta solo SECUENCIA y nada mas, puedes utilizar la función IndexOf de la propiedad Lines del Memo.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
#3
|
|||
|
|||
Joer que facil, pues la verdad es que soluciona baste bien lo que queria hacer, pero de todas formas si no estubiera en lineas distintas como se podria hacer?
Por ejemplo bla bla SECUENCIA TRES DOS bla bla.. Lo que he hecho es correr memo.text[a] desde la posicion donde acaba SECUENCIA, y muevo el caracter leido a una variable string, busco que esa variable tome valor espacio ' ' y almaceno esa posicion, luego continuo hasta el siguiente espacio y hago memo.selstar:=posicion1; memo.sellength:=posicion2-posicion1 cadena2:=memo.seltext y luego saco esa cadena, el problema es si no esta en la misma linea y esta en la siguiente al hacer esto leo cosas raras como #$D y cosas asi y ya me pierdo, porque me pinta por el memo donde saco un cuadrado y cosas asi, yo pense que el enter era #10 o #13, si soluciona algo puedo tratar de pegar el codigo que uso. ASIAS |
#4
|
|||
|
|||
Hola, deberas crearte, por ejemplo, unas funciones para ir recorriendo la 'frase':
y luego ir recorriendo las 'palabras' en el texto
estas funciones por eso estan incompletas. No estoy seguro si identificara la ultima palabra , ademas de tener que tratarse los caracteres especiales #13, #10, etc...saludos PD: edito, y incluyo el stringreplace, y trim para eliminar espacios finales e iniciales. Última edición por coso fecha: 10-11-2008 a las 22:43:58. |
#5
|
|||
|
|||
Jo, me parece que me queda mucho por estudiar porque no he entendido practicamente nada de tu codigo coso, aun así muchas gracias, intentaré empaparme un poco mas a ver si me aclaro.
|
#6
|
|||
|
|||
en primerapalabra :
si pos(' ',o) = 0 entonces es que no hay espacios, por lo que el parametro o es una palabra. Si no es el caso y hay espacios, entonces se copia de o desde la posicion cero a la posicion del espacio (la primera palabra) en restofrase : si pos(' ',o) = 0 entonces no hay espacios, por lo que no hay resto de frase (es una sola palabra). Si si que hay espacios, entonces se copia de o desde la posicion del primer espacio hasta el final (el resto de la frase) los stringreplace sirven para descartar los caracteres #13, #10, etc... el bucle se conforma asi : mientras haya 'frase', se coge la primera palabra y se asigna a 'frase' el resto de la frase. Luego con la palabra cogida (s) tu ya haces lo que necesites. saludos. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
contar numero de palabras en un string | lina maria | Varios | 9 | 19-05-2008 20:33:50 |
Recorrer un STRING | creus | Varios | 3 | 07-01-2007 22:52:37 |
Error al recorrer string | creus | Varios | 6 | 16-11-2006 22:39:45 |
recorrer string | emiliu | Varios | 2 | 16-11-2005 10:23:25 |
Recorrer un string | davidgaldo | Varios | 3 | 09-11-2005 10:04:28 |
![]() |
|