SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Jessuss en Lunes 26 de Mayo de 2003, 18:22
-
Hola a todos, necesito por favor vuestra ayuda:
Yo tengo un texto desmenbrado en una BD de Access, es decir, de un texto tengo todas las palabras que hay en el dentro de la BD (Palabra considero toda aquella que va entre espacios) con su linea, y posicion final e inicial de la palabra dentro del texto.
Ahora necesito volver a reconstruir el texto con las palabras que tengo en la BD y lo he de hacer editando alguna de ellas en Rojo y Negrita por lo que tengo que usar creo solamente un RichTextBox, ¿como puedo hacer esto?
Gracias de antemano y un Saludo. :question:
-
Si mal no comprendo, ¿quieres decir que tienes una DB con algo parecido a esto?
Fila -- Inicio -- Palabra -- Fin
---1 ------ 1 --- Hola ---------- 4
---1 ------ 5 --- amigo -------- 9
---1 ----- 10 --- Juan ---------13
---2 ----- 16 --- Adiós ------- 20
Y quieres componer esto:
Hola amigo Juan
Adiós
Si te he de ser sincero, eso es lo que yo interpreto de tu mensaje, pero con mayor sinceridad aun... pienso que se trata de una locura... Claro que de loco a genio hay un pasito muy corto.
A la espera de tus noticias, saludos afectuosos
-
Hola J.M.Movilla, efectivamente, eso es justamente lo que intento hacer, ya se que es una locura pero....
He de hacerlo, pero no se como.
Gracias por tu ayuda y tu interés.
:question:
-
La verdad es que no sé qué podré decirte además de que me parece incomprensible... supongo que se trate de un ejercicio práctico de examente para matrícula de honor...
Vamos a ver, de todas formas, si no me enrollo y no te enredo a ti más...
Como es de suponer que el campo que yo he llamado "FIN" de la última palabra contenga la situación "detrás de esa última palabra"... podemos, tras leer la Tabla1 en un rsPrueba hace rsPrueba.MoveLast y tomar
LongituddelTexto = rsPrueba!Fin
Bueno, pues ahora te compones un texto en blanco con esa longitud:
Buf = String(LongituddelTexto, " ")
Vas al principio de la Tabla1 y sustituyes en ese texto en blanco cada trozo (desde Inicio hasta Fin) por el contenido del campo Palabra
rsPrueba.MoveFirst
Do While not rsPrueba.Eof
Buf = Left( Buf, rsPrueba!Inicio) & rsPrueba!Palabra & Mid( Buf, rsPrueba!Fin)
rsPrueba.MoveNext
Loop
Añadimos un retorno de carro: Buf = Buf & chr(10) & chr(13)
y Santas Pascuas...
Seguro que necesitarás hacer modificaciones, sobre todo en el tratamiento de los campos, dependiendo de cómo abras la BD; pero la idea creo que sería esa, y... OJALA TE FUNCIONE...
-
Gracias en cuanto lo halla probado te comento que tal.
Saludos y gracias de nuevo.:gracias:
-
Gracias J.M.Movilla por tu ayuda, la verdad que ha sido una muy buena base la que me has dado, solo he tenido que cambiar un poco lo que me has proporcionado, está casi hecho, para que veas como lo he logrado te pongo mi codigo, a ver que te parece:
Open "C:prueba" For Output As #1
rdoPalabras.MoveLast
Longitud = rdoPalabras!Fin
rdoPalabras.MoveFirst
While rdoPalabras.EOF = False
'en "x" guardamos la 1ª línea del fichero seleccionado
x = rdoPalabras!linea
Texto = ""
Do While rdoPalabras!linea = x
'METER EN UNA VARIABLE EL TEXTO DEL FICHERO
Longitud = rdoPalabras!Fin
rdoPalabras.MoveNext
If rdoPalabras.EOF <> True Then Longitud = rdoPalabras!Inicio - Longitud
rdoPalabras.MovePrevious
Texto = Left(Texto, rdoPalabras!Inicio) & rdoPalabras!Palabra & String(Longitud, " ")
Inicio = rdoPalabras!Inicio
rdoPalabras.MoveNext
If rdoPalabras.EOF = True Then Exit Do
Loop
Texto = Texto & Chr(13)
Print #1, Texto
Wend
Close #1 'Cierra el fichero
Falta poco para lograrlo perfecto.
Un cordial saludo. :jumpie:
-
Logradooooooooo!!!!, asi queda el codigo:
Open "C:coneurofueph8prueba" For Output As #1
rdoPalabras.MoveLast
Longitud = rdoPalabras!Fin
' Texto = String(Longitud, " ")
rdoPalabras.MoveFirst
Inicio = 0
Do While Not rdoPalabras.EOF
'en "x" guardamos la 1ª línea del fichero seleccionado
x = rdoPalabras!linea
Texto = " "
Do While rdoPalabras!linea = x
'METER EN UNA VARIABLE EL TEXTO DEL FICHERO
Longitud = rdoPalabras!Fin
rdoPalabras.MoveNext
If rdoPalabras.EOF <> True Then Longitud = rdoPalabras!Inicio - Longitud
rdoPalabras.MovePrevious
Texto = Texto & String(rdoPalabras!Inicio - Inicio, " ") & rdoPalabras!Palabra '& String(Longitud, " ")
Inicio = rdoPalabras!Fin
rdoPalabras.MoveNext
If rdoPalabras.EOF = True Then Exit Do
Loop
Texto = Texto & Chr(13)
Print #1, Texto
Loop
Close #1 'Cierra el fichero
Hasta la proxima, y gracias por enseñarme el camino. :jumpie: :good:
-
Da gusto comprobar que lo que mejor funciona no es el programa informático sino la comunicación interpersonal!!!
Estoy contigo.