|
Página 1 de 1
|
Problema Con La Fabricacion De Un Editor De Texto... (Solucionado, Cambio D...
Autor |
Mensaje |
Pablo-GNU
Aprendiz
Registrado: Enero 2010
Mensajes: 57
Edad: 37
|
Problema Con La Fabricacion De Un Editor De Texto... (Solucionado, Cambio De Diseño)
Buenas tardes, estoy intentando hacer una aplicacion para la generacion de Compact Flash como HDD, pero necesito añadir un modulo para editar ciertos ficheros de configuracion con extension .cfg
Consigo cargar los ficheros pero no veo el archivo entero en si...
PUBLIC SUB Abrir_editor_Click()
DIM arrCad AS NEW String[]
DIM txtTemp AS TextArea
DIM c AS String
DIM ruta AS String
Dialog.Title = "Seleccione un archivo"
Dialog.Filter = ["*.cfg", "Ficheros de Configuracion"]
IF Dialog.OpenFile() THEN
Message.Info("No ha seleccionado nada")
ELSE
ruta = Dialog.Path
arrCad = Split(File.Load(ruta), "\n")
txtTemp = Editor.Children[0]
END IF
IF txtTemp.Text <> "" THEN
nuevaHoja()
END IF
FOR EACH c IN arrCad
Editor.Text = ruta
txtTemp = Editor.Children[0]
txtTemp.Text &= c & "\n"
NEXT
END
Con este codigo consigo cargarlo, pero lo dicho, no veo el fichero entero... solo veo una parte...
#####################################################
#
CO CN=O61PCINC TA=DIF001 NE=14 NU=1 MO=1 EN=H IM=40 LI=0 LR=251 MI=0 MR=50.2 VR=999999999 UI=lm2 DE="PRECIP. CM EN VALIRA EN SEO DE URGEL"
#
#####################################################
# --> Definicion VARIABLES CALCULADAS
#####################################################
#
CO AI=O65QRIO1 TA=AILOG1 NE=2 NU=0 MO=1 NS=1000 EN=N CV=NULO FI=0 VA=A HH=23 HI=80 LO=20 LL=10 HU=0.0 HD=0.0 GP=0.0 GN=0.0 HG=0.0 UI=m3S DE="Q. RIO VALIRA EN SEO DE URGEL"
#
Esas lineas son las que veo, pero el fichero contiene 144 lineas a mostrar...
El error que veo en el IDE es el siguiente...
(Texto:3682): Gtk-CRITICAL **: gtk_text_buffer_emit_insert: assertion `g_utf8_validate (text, len, NULL)' failed
lo veo muchas veces...
Como puedo conseguir verlas todas? No le encuentro el fallo la verdad...
Por cierto, para luego guardar los cambios si lo modifico? como deberia de hacerlo? Desde ya muchas gracias...
última edición por Pablo-GNU el Sabado, 23 Enero 2010, 14:54; editado 1 vez
|
#1 Viernes, 22 Enero 2010, 17:54 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Problema Con La Fabricacion De Un Editor De Texto...
Vamos a ver
Falta información para saber lo que te ocurre.
En vez de hacer esto
arrCad = Split(File.Load(ruta), "\n") 'aquí tienes cada línea de ese archivo
con lo que dejas cada línea sin \n en cada elemento del array
y luego hacer un bucle para recorrer ese array y en cada línea deshacer lo anterior
¿No sería mejor meterlo ya directamente?
txttemp.text=file.load(ruta)
Esto no te resuelve nada. Solo lo simplifica
¿Podrías especificar para qué quieres txttemp si en realidad tu quieres tu archivo en un editor?
De hecho se me ocurren bastantes soluciones mas sencillas como por ejemplo un textedit
Y ya tienes todo tu texto allí y solo necesitas los métodos de textedit para hacer lo que quieras hacer. Entiendo que con el Editor te vale igual (si le haces una sintaxis incluso mejor) pero no sé usarlo.
Vamos que me da la impresión que te haces un lío aunque no estoy seguro de haber entendido bien tu código
|
#2 Viernes, 22 Enero 2010, 20:31 |
|
|
Pablo-GNU
Aprendiz
Registrado: Enero 2010
Mensajes: 57
Edad: 37
|
Re: Problema Con La Fabricacion De Un Editor De Texto...
Te contesto a lo que me has dicho, he probado lo de simplificar codigo, y no me muestra absolutamente nada, cuando de la otra manera si que lo hace...
txtTemp = Editor.Children[0] 'esto no se que es
En txtTemp lo que haces es pasarle todas las propiedades del Editor, el Editor es el nombre que tiene un grupo de Pestañas...
nuevaHoja() 'esto tampoco se que es
nuevaHoja() es una funcion, se encarga de que si yo abro mas archivos, vaya creando distintas pestañas, justamente por eso lo compruebo en esta seccion de codigo:
IF txtTemp.Text <> "" THEN
nuevaHoja() 'esto tampoco se que es
Te incluyo la funcion de nuevaHoja para que la veas
El textedit.text que me dices no lo he encontrador. no se como incluirlo, soy un poco nuevo en esto de gambas y estoy aprendiendo leyendo y a golpe de corazon, pero vamos, que aprendo... tenme paciencia please :D. Te lo agradezco de verdad...
|
#3 Viernes, 22 Enero 2010, 21:17 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Problema Con La Fabricacion De Un Editor De Texto...
ah entonces el editor no es un control editor sino un tabstrip.
Citar: El textedit.text que me dices no lo he encontrador
Ahora estoy en windows y no puedo verlo para decírtelo con seguridad pero creo que está incluído en gb.qt osea que te vas a las propiedades del foro - componentes y lo marcas.
De todas formas para probar intenta usar un textarea
Con el textedit lo harás mejor y con el editor aún mejor pero para probar te vale.
Sigo sin entender lo que quieres hacer porque para editar un texto no hay necesidad alguna de grupos de pestañas ni tabstrip ni nada pero bueno tu prueba eso que te digo y yo creo que acabamos antes
Un saludo
|
#4 Viernes, 22 Enero 2010, 22:34 |
|
|
Pablo-GNU
Aprendiz
Registrado: Enero 2010
Mensajes: 57
Edad: 37
|
Re: Problema Con La Fabricacion De Un Editor De Texto...
Ya le he pillado el truco, justo entraba para contestarte y darte las gracias, he activado los gb.qt y gb.qt.ext y he usado el Editor, pero me he dado cuenta de que el fallo que tengo ahora es que los acentos no los saca bien, he usado el editor y no el textedit, porque he leido que el editor acepta texto plano y el textedit es para texto enriquezido, te adjunto unas imagenes para que veas porque uso las tabString y asi de paso me ayudas si puedes a ver porque tengo el siguiente problema...
En esta veras el problema de los acentos...
El siguiente problema es curioso, si abro un archivo va bien, si abro otro, me crea otra pestaña y sin problemas, pero al añadir mas, lo unico que hace es crear una pestaña en blanco con el nombre Tab2, me cierra el ultimo archivo abriendo el siguiente encima pero tampoco me muestra el contenido..
Tambien te adjunto el codigo a ver si con eso lo podemos sacar, voy a seguir mirando a ver que veo...
|
#5 Viernes, 22 Enero 2010, 23:01 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Problema Con La Fabricacion De Un Editor De Texto...
Pablo, te debes haber equivocado al simplificar el código, pero la simplificación que propone soplo es correcta y es necesario que lo hagas porque de otro modo terminarás construyendo programas que serán muy difíciles de mantener.
Entonces lo que deberías hacer es mostrarnos el código que simplificaste para ver cuál es el error.
Reproduzco el código introduciéndole preguntas como comentarios.
'¿Desde dónde se llama este procedimiento? ¿Es el evento Click de una opción de menú?
PUBLIC SUB Abrir_editor_Click()
DIM arrCad AS NEW String[]
DIM txtTemp AS TextArea
DIM c, ruta AS String
Dialog.Title = "Seleccione un archivo"
Dialog.Filter = ["*.cfg", "Ficheros de Configuracion"]
IF Dialog.OpenFile() THEN
'Si asumes que el usuario no seleccionó nada intencionalmente, entonces este mensaje no tiene sentido
Message.Info("No ha seleccionado nada")
ELSE
'Las 2 líneas que siguen no parecen tener sentido
ruta = Dialog.Path
arrCad = Split(File.Load(ruta), "\n")
txtTemp = Editor.Children[0]
END IF
'Hasta aquí el usuario abrió el cuadro de diálogo "Abrir archivo" y pudo:
' * haber elegido un archivo
' * haber elegido varios archivos (para evitarlo se debe llamar así: Dialog.OpenFile(False) ). No estás manejando esta posibilidad.
' * haber cancelado el cuadro. No estás manejando correctamente esta posibilidad. Si el usuario cancela el cuadro la función debería terminar.
' ¿Cómo es que decides crear una nueva pestaña en función de si txtTemp.Text es una cadena nula?
IF txtTemp.Text <> "" THEN
nuevaHoja()
END IF
'Las sentencias a continuación parecen ser innecesarias
FOR EACH c IN arrCad
Editor.Text = ruta
txtTemp = Editor.Children[0]
txtTemp.Text &= c & "\n"
NEXT
Bueno, Pablo. El problema más importante que veo aquí es que estás diseñando mal.
Supongamos que:
1) El usuario hace clic en la opción de menú: Archivo > Nuevo
¿Qué debería hacer tu programa?
1.a- Añadir una pestaña
1.b- Crear un nuevo control (supongo que estás usando TextArea), que tenga como contenedor (parent) a la pestaña recién creada.
2) Supongamos ahora que el usuario hace clic en la opción de menú: Archivo > Abrir
¿Qué debería hacer tu programa?
2.a- Presentar el cuadro de diálogo Abrir archivo
2.b.1- El usuario pulsa el botón Cancelar, no hay que hacer nada, absolutamente nada (es decir, la rutina que lanzó el cuadro de diálogo Abrir archivo debe terminar, sin hacer nada más).
2.b.2.a- El usuario eligió un archivo hay que realizar los puntos 1.a y 1.b, para luego asignarle al nuevo control TextArea el contenido del archivo.
2.b.2.b- El usuario eligió varios archivos por lo tanto hay que realizar los pasos del punto 2.b.2.a tantas veces como archivos haya seleccionado el usuario.
La descripción anterior es básicamente lo que se conoce como "caso de uso" y si la sigues (corrígela si falta o sobra algo) producirás un diseño mucho mejor de las funciones o procedimientos y te librarás de repetir código inútilmente.
Observa que en el c.d.u. anterior se observa que las acciones 1.a y 1.b deben formar parte de una rutina (ya que se repiten en 2.b.2).
La acción 2.b.1 te indica que hay un error de lógica en tu código actual.
La acción 2.b.2.a te indica que debe haber una llamada a la rutina creada para las acciones 1.a y 1.b
La acción 2.b.2.b te indica que tanto 2.b.2.a como 2.b.2.b son casos particulares de un mismo curso de acción que sigue el usuario y como ambas tienen como resultado la elección de uno o más archivos deberán ser procesadas por una misma rutina.
Para completar esta información deberías estudiar un poco más cómo funciona la clase Dialog
Saludos cordiales.
=================== Cómo programar con Gambas
Speed Books: informática libre.
|
#6 Viernes, 22 Enero 2010, 23:24 |
|
|
Pablo-GNU
Aprendiz
Registrado: Enero 2010
Mensajes: 57
Edad: 37
|
Re: Problema Con La Fabricacion De Un Editor De Texto...
Fabian, ante todo gracias por tu respuesta, me acababa de hacer una lista en papel de todas las opciones posibles y me he dado cuenta de que lo estaba haciendo tan complejo (lo digo porque en realidad no hacia falta) que estaba cometiendo demasiados errores, he anulado ambas cosas, ya que he planteado editar ficheros de uno en uno para no complicar demasiado al usuario, asi que las cosas han cambiado, te voy a subir una imagen para que lo veas, de todos modos antes de cambiarlo lo he probado y si que es verdad que funciona su simplificacion, por ello quiero pedirle disculpas, si que es cierta... sigo con el problema de los acentos.
Como puedo hacer que nos muestre el acento?
EDIT:
Bueno, tengo ya el editor casi acabado, solo me queda hacer que muestre bien los caracteres, he estado leyendo sobre la funcion Dconv y Sconv pero no se como hacerlo, la verdad que se me escapa un poco... de momento el codigo lo tengo implementado asi...
PUBLIC SUB Abrir_editor_Click()
Editor_body.Enabled = TRUE
Editor_body.Text = File.Load(Selector.SelectedPath)
END
PUBLIC SUB Guardar_editor_Click()
File.Save(Selector.SelectedPath, Editor_body.Text)
Editor_body.Text = ""
Editor_body.Enabled = FALSE
END
última edición por Pablo-GNU el Sabado, 23 Enero 2010, 00:53; editado 2 veces
|
#7 Viernes, 22 Enero 2010, 23:53 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|