Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Con La Fabricacion De Un Editor De Texto... (Solucionado, Cambio D...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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 
Pablo-GNU - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con La Fabricacion De Un Editor De Texto... 
 
Vamos a ver

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") 'aquí tienes cada línea de ese archivo
   txtTemp = Editor.Children[0] 'esto no se que es
END IF
IF txtTemp.Text <> "" THEN
   nuevaHoja() 'esto tampoco se que es
END IF
FOR EACH c IN arrCad
   Editor.Text = ruta
   txtTemp = Editor.Children[0] 'no lo entiendo
   txtTemp.Text &= c & "\n" 'aquí vas metiendo línea a línea todo lo que separaste antes con el \n y poniéndolo de  nuevo
NEXT


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
txtTemp.Text &= c & "\n"

¿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
textedit.text=file.load(ruta)

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
 
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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


PUBLIC SUB nuevaHoja()

DIM cfgEditAux AS TextArea
DIM conTabs AS Float

Editor.Count += 1
conTabs += 1
Editor.Index = conTabs
cfgEditAux = NEW TextArea(Editor)
cfgEditAux.X = cfgEdit.X
cfgEditAux.Y = cfgEdit.Y
cfgEditAux.Height = cfgEdit.Height
cfgEditAux.Width = cfgEdit.Width
cfgEditAux.Visible = TRUE

END



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...
 



 
Pablo-GNU - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
textarea.text=file.load(ruta)


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
 
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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...
pantallazotextov

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..

pantallazotexto1

Tambien te adjunto el codigo a ver si con eso lo podemos sacar, voy a seguir mirando a ver que veo...

PUBLIC SUB Abrir_editor_Click()

DIM arrCad AS NEW String[]
DIM txtTemp AS Editor
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_tab.Children[0]
END IF
IF txtTemp.Text <> "" THEN
nuevaHoja()
END IF
Editor_tab.Text = ruta
txtTemp = Editor_tab.Children[0]
FOR EACH c IN arrCad
Editor_tab.Text = ruta
txtTemp = Editor_tab.Children[0]
txtTemp.Text &= c & "\n"
NEXT

END


PUBLIC SUB nuevaHoja()

DIM cfgEditAux AS Editor
DIM conTabs AS Float

Editor_tab.Count += 1
conTabs += 1
Editor_tab.Index = conTabs
cfgEditAux = NEW Editor(Editor_tab)
cfgEditAux.X = cfgEdit.X
cfgEditAux.Y = cfgEdit.Y
cfgEditAux.Height = cfgEdit.Height
cfgEditAux.Width = cfgEdit.Width
cfgEditAux.Visible = TRUE

END

 



 
Pablo-GNU - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.

pantallazotexto


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


pantallazotexto2
 



 
última edición por Pablo-GNU el Sabado, 23 Enero 2010, 00:53; editado 2 veces 
Pablo-GNU - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Hacer Un Editor De Texto soplo General 7 Martes, 11 Enero 2011, 16:16 Ver último mensaje
soplo
No hay nuevos mensajes Guardar Y Abrir Con Un Editor De Texto KTKL Controles/Librerías/Componentes 2 Sabado, 10 Septiembre 2011, 20:20 Ver último mensaje
KTKL
No hay nuevos mensajes Editor De Texto Para Consola Shell Mundo Linux 8 Viernes, 31 May 2019, 08:21 Ver último mensaje
Shell
No hay nuevos mensajes Trasladar A Un Texto A Editor Kate Mediant... vuott Aplicaciones/Fragmentos de Código 13 Domingo, 24 May 2020, 22:29 Ver último mensaje
tercoIDE
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron