Programación General > Visual Basic para principiantes

 Problema al cargar un texto desde un FileListBox

(1/1)

Kyrylys:
Hola buenas, estoy practicando VB6.0 y tengo un problema al hacer la carga de un .txt seleccionado desde un FileListBox

la aplicación que estoy haciendo consta de varios formularios, en el 1º hay un RichTextBox donde se puede escribir texto o que se cargue.

En el 1º formulario hay una opción para hacer un load del archivo por medio de un cuadro de dialogo, y así mismo hay un botón que llama a un 2º formulario dónde se muestra un explorador por medio de DriveListBox, DirListBox y FileListBox. El problema al hacer la carga desde el FilelistBox es que hay ocasiones en las queno lo ejecuta.

Por ejemplo: el DriveListBox y el DirListBox muestran la ruta de la última vez que accediste a alguno de los discos/carpetas bien por medio de la aplicación o por abrir una carpeta, reconoce como root la ultima ruta almacenada en el explorer del SO.
Si cargo algún archivo de ese directorio no hay problemas, pero si cambio  la selección del DirListBox o el DriveListBox me arroja un error = " Error 53 no se encuentra el archivo seleccionado".

Ha probado a cambiar de canal segun haga el load por el dialog o por los listbox y no se soluciona.
Adjunto los códigos del Load (el del dialog no me da ningun problema, pero es por si le afecta en algo)

Codigo del Dialog
Diag

--- Código: Text --- Dim longitud As IntegerDim texto As String(...)diag.Filter = "Archivos de texto (*.txt)|*.txt"diag.ShowOpen'para que cuando canceles no de error => IFIf diag.FileName <> "" Then'abrir fichero canales de 1 a 511Open diag.FileName For Input As #1'guardar la longitudlongitud = FileLen(diag.FileName)'#canal donde hemos guardado el ficherotexto = Input(longitud, #1)rtxttexto.Text = texto'cerrar canalClose #1End If  

flfile => FileListBox

--- Código: Text --- Dim fllongitud As IntegerDim fltexto As String(...)Private Sub flfile_Click()If flfile.FileName <> "" Then'abrir fichero canales de 1 a 511Open flfile.FileName For Input As #1'guardar la longitudfllongitud = FileLen(flfile.FileName)'#canal donde hemos guardado el ficherofltexto = Input(fllongitud, #1)Form1.rtxttexto.Text = fltexto'cerrar canalClose #1End IfForm3.HideEnd Sub 
Espero qeu me puedan ayudar, muchas gracias.

F_Tanori:

--- Cita de: "Kyrylys" ---Hola buenas, estoy practicando VB6.0 y tengo un problema al hacer la carga de un .txt seleccionado desde un FileListBox

...la aplicación que estoy haciendo consta de varios formularios, en el 1º hay un RichTextBox donde se puede escribir texto o que se cargue...
--- Fin de la cita ---

El control RichTextBox cuenta con un metodo llamado LoadFile que recibe como parametro el nombre del archivo y el tipo (opcional) y... lo carga :D


--- Código: Visual Basic ---RichTextBox1.LoadFile "C:Archivo.rtf" 

--- Cita de: "Kyrylys" --- El problema al hacer la carga desde el FilelistBox es que hay ocasiones en las queno lo ejecuta.

Por ejemplo: el DriveListBox y el DirListBox muestran la ruta de la última vez que accediste a alguno de los discos/carpetas bien por medio de la aplicación o por abrir una carpeta, reconoce como root la ultima ruta almacenada en el explorer del SO.
Si cargo algún archivo de ese directorio no hay problemas, pero si cambio  la selección del DirListBox o el DriveListBox me arroja un error = " Error 53 no se encuentra el archivo seleccionado"...
--- Fin de la cita ---

Eso es porque el esta tomando el directorio actual [curdir] pudes cambiar la ruta utilizando [ chdir(path) ] aunque esto no es muy viable, el error es claro  no se encuentra el archivo seleccionado donde lo estas buscando no existe el archivo supongamos que el directorio actual esta en "C:Archivos de programaMicrosoft Visual StudioVB98"

Al hacer esto estas obviando la ruta ya que FileName solo devuelve el nombre del archivo no toda la ruta( entonces el sistema entiende como que se encuentra en al directorio actual "C:Archivos de programaMicrosoft Visual StudioVB98Archivo.rtf")


--- Código: Visual Basic ---Open flfile.FileName For Input As #1 
La ruta la puedes obtener de la propiedad path


--- Código: Visual Basic ---Open flfile.Path &"" & flfile.FileName For Input As #1 
Bueno ya antes se ha explicado lo del FreeFile()

viewtopic.php?f=143&t=37194#p135453
viewtopic.php?f=143&t=37202#p135552

Saludos

Nebire:
Cambia estas líneas

--- Código: Visual Basic ---     Private Sub flfile_Click()        If flfile.FileName <> "" Then              Open flfile.FileName For Input As #1     ....     ....     ....  
Por estas otras:

--- Código: Visual Basic ---     Private Sub flfile_Click()        dim fich as string              If flfile.FileName <> "" Then              fich= File1.Path & "" & File1.FileName  ' ruta entera hacia el fichero              if dir(fich)<>"" then                ' desde que se seleccionó el archivo... existe aún en diche ruta                  Open fich For Input As #1    ' si existe todavía abrimos el archivo, dando [color=#8000FF]su ruta completa[/color]....         ....        ....        ....      p.d: se me ha adelantado F_Tanori al enviar la respuesta, desde que estoy respondiendo... Como indicas que estás practicando, el código que te indico sigue siendo válido sin menoscabo de lo que te indica F_Tanori...

Kyrylys:
Muchas gracias, lo probaré ^^

Desconocía el método LoadFile, pero la gracia estaba en practicar el tema de los diferentes ListBox, aun asi gracias de nuevo

Navegación

[0] Índice de Mensajes

Ir a la versión completa