Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

¿Que tiene de malo este código?

Estas en el tema de ¿Que tiene de malo este código? en el foro de Visual Basic clásico en Foros del Web. Buenas ,estoy creando una aplicacion la cual quiero que edite el numero de un .txt desde el exe Pero a la hora de ejecutar el ...
  #1 (permalink)  
Antiguo 10/02/2011, 16:07
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
¿Que tiene de malo este código?

Buenas ,estoy creando una aplicacion la cual quiero que edite el numero de un .txt desde el exe

Pero a la hora de ejecutar el exe me tira este error.



¿Que es lo que falla?
  #2 (permalink)  
Antiguo 10/02/2011, 17:55
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: ¿Que tiene de malo este código?

Lo que pasa es que el app.path es variable osea podria ser C:\archivo.txt o D:\archivo.txt osea que siempre cambia, por lo tanto no puedes utilizarla ni declararla como una constante, si cambias el Const por Dim ahi si funcionara.
  #3 (permalink)  
Antiguo 10/02/2011, 19:31
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: ¿Que tiene de malo este código?

Al hacer lo que me has dicho de cambiar el Const por dim , me sale este error.

  #4 (permalink)  
Antiguo 10/02/2011, 19:43
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: ¿Que tiene de malo este código?

Claro por esa forma solo es para declarar constantes y este caso seria una variable, asi debe funcionar
dim path as string
path = app.path & "database\......"
  #5 (permalink)  
Antiguo 10/02/2011, 20:11
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: ¿Que tiene de malo este código?

Cita:
Iniciado por franko1809 Ver Mensaje
Claro por esa forma solo es para declarar constantes y este caso seria una variable, asi debe funcionar
dim path as string
path = app.path & "database\......"
Me da el error de ejecucion 75

no se encontro la ruta o archivo.

y la ruta la tengo bien puesta

Aqui el codigo

Código:
'Boton abrir
Private Sub Command1_Click()
    Dim linea As String
    Open path For Input As #1
    While Not EOF(1)
        Line Input #1, linea
        Text1.Text = ""
        If Len(Text1.Text) = 0 Then
            Text1.Text = Text1.Text & linea
        Else
            Text1.Text = Text1.Text & vbNewLine & linea
        End If
    Wend
    Close #1
End Sub

'Boton guardar
Private Sub Command2_Click()
    Open path For Output As #1
    Print #1, Text1.Text
    Close #1
End Sub

Private Sub Form1_Load()
Dim path As String
path = App.path & "\database\new_habbo\hcdays.txt"
End Sub
  #6 (permalink)  
Antiguo 10/02/2011, 21:33
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Respuesta: ¿Que tiene de malo este código?

El problema que vos a la variable path la declaraste dentro del procedimiento "Form_Load" lo cual, cuando termina ese procedimiento la variable se elimina...

Cuando haces el OPEN en el evento Click del boton, llamas a path pero ese path es VACIO no tiene ningun valor, por eso te dice que no reconoce la ruta.

Lo que tenes que hacer es declararla como variable a nivel formulario... es decir ponerla arriba de todo fuera de los procedimientos. Eso es todo
  #7 (permalink)  
Antiguo 11/02/2011, 12:37
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: ¿Que tiene de malo este código?

¿Te refieres en general - declaraciones? hay lo pongo y me dice : Error de complicacion

el procedimiento externo no es valido , y me señala el App. de App.path.

¿Porque?
  #8 (permalink)  
Antiguo 11/02/2011, 22:14
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Respuesta: ¿Que tiene de malo este código?

A mi si me funciona asi:
Código:
Dim path As String

Private Sub Command1_Click()
    Dim linea As String
    Open path For Input As #1
    While Not EOF(1)
        Line Input #1, linea
        Text1.Text = ""
        If Len(Text1.Text) = 0 Then
            Text1.Text = Text1.Text & linea
        Else
            Text1.Text = Text1.Text & vbNewLine & linea
        End If
    Wend
    Close #1
End Sub

'Boton guardar
Private Sub Command2_Click()
    Open path For Output As #1
    Print #1, Text1.Text
    Close #1
End Sub

Private Sub Form_Load()
path = App.path & "\archivo.txt"
End Sub
  #9 (permalink)  
Antiguo 12/02/2011, 05:31
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Respuesta: ¿Que tiene de malo este código?

Cita:
Iniciado por HiguaiiN Ver Mensaje
¿Te refieres en general - declaraciones? hay lo pongo y me dice : Error de complicacion

el procedimiento externo no es valido , y me señala el App. de App.path.

¿Porque?
Sos muy bruto hermano...

Una cosa es declarar y otra es asignar...

Ya te explicaron mas arriba que no podes asignar valores variables en general o global.

Lo correcto y lo que te decia es lo que te puso franko
  #10 (permalink)  
Antiguo 12/02/2011, 08:31
Avatar de A.H.H  
Fecha de Ingreso: mayo-2007
Ubicación: IRUN,(GUIPUZCOA) España
Mensajes: 178
Antigüedad: 17 años
Puntos: 4
De acuerdo Respuesta: ¿Que tiene de malo este código?

HOLA HiguaiiN

Primero te dire, que CULD no tiene razon al llamarte Bruto, ya que a Franko1809, le funciona el codigo ya que su ruta no contiene las carpetas que tu tienes en tu ruta, osea que usa solo el app.path + un archivo de texto, que NO ES LO QUE QUIERES TU, ya que en tu ejemplo usas el app.path + un directorio + subdirectorio +archivo de texto.

Aclarando esto, te dire que el error te lo tira porque primero debes crear el directorio \database y despues el subdirectorio \new_habbo, y una vez que existen estas dos carpetas ya puedes abrir el archivo de texto \hcdays.txt
Osea el error es porque no encuentra la ruta de esas dos carpetas, ya que el archivo de texto esta metido dentro del subdirectorio \new_habbo.

En vb6 se puede crear el directorio como sabemos con mkdir pero para crear un subdirectorio se complica la cosa.

hacemos MkDir (App.Path & "\database") para crear la primera carpeta.

hacemos MkDir (App.Path & "\database") & ("\new_habbo") para crear dentro el subdirectorio

ANTES de crear las carpetas deberias preguntar con DIR en el FORM_LOAD si existe la ruta, entonces compruebas que si no existe que la cree, y que si existe que lea o guarde.

PODRIA SER ESTE TU CODIGO:
Cita:
Dim ruta As String
Private Sub Form_Load()
'AL INICIAR comprobamos si existe la ruta'
ruta = (App.Path & "\database\new_habbo\hcdays.txt")
If Dir(ruta, vbArchive) = vbNullString Then
MkDir (App.Path & "\database") 'si NO existe creamos la primera carpeta'
MkDir (App.Path & "\database") & ("\new_habbo") 'y dentro la segunda carpeta'
Open ruta For Output As #1 'y dentro creamos el archivo de texto'
Print #1, "ARCHIVO VACIO"
Close #1
Else
Exit Sub 'si existe la ruta salimos del sub'
End If
End Sub

Private Sub Command1_Click()
'boton de leer'
Dim linea As String
Open ruta For Input As #1
While Not EOF(1)
Line Input #1, linea
Text1.Text = ""
If Len(Text1.Text) = 0 Then
Text1.Text = Text1.Text & linea
Else
Text1.Text = Text1.Text & vbNewLine & linea
End If
Wend
Close #1

End Sub

Private Sub Command2_Click()
'boton escribir o guardar'
Open ruta For Output As #1
Print #1, Text1.Text
Close #1

End Sub


espero hayas entendido de que al crear o leer un archivo de texto, primero la ruta debe de existir si no dara error.

salu2

Última edición por A.H.H; 12/02/2011 a las 08:37
  #11 (permalink)  
Antiguo 17/02/2011, 04:56
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: ¿Que tiene de malo este código?

Respondiendo al titulo del mensaje, lo que tiene mal el código es que es de VB .NET y lo intentas utilizar en VB 6.0

En muchas cosas es parecido, pero hay que adaptar la mayor parte del código para pasarlo de un sistema a otro, y aparte, .NET tiene muchas cosas que no tienen equivalente en VB6, con lo que hay que crear funciones VB6 que las imiten, y no siempre es fácil o posible.

Para otra vez asegúrate de que el código que encuentras es para VB6.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #12 (permalink)  
Antiguo 17/02/2011, 06:07
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 6 meses
Puntos: 19
Respuesta: ¿Que tiene de malo este código?

Cita:
Iniciado por pkj Ver Mensaje
Respondiendo al titulo del mensaje, lo que tiene mal el código es que es de VB .NET y lo intentas utilizar en VB 6.0

En muchas cosas es parecido, pero hay que adaptar la mayor parte del código para pasarlo de un sistema a otro, y aparte, .NET tiene muchas cosas que no tienen equivalente en VB6, con lo que hay que crear funciones VB6 que las imiten, y no siempre es fácil o posible.

Para otra vez asegúrate de que el código que encuentras es para VB6.

Saludos
Flasheaste MAL...

El codigo de la imagen es de VB 6.0

1- El acceso al archivo esta correcto, .NET es diferente para el acceso a archivos.
2- .NET no conoce App.path, asi que eso tambien esta correcto para 6.0
3- El While es correcto para 6.0
4- La declaracion de las subrutinas son correctas para 6.0, en .NET tiene otros parametros

En fin, si vas a venir a dar consejos trata de verificarlos primero
  #13 (permalink)  
Antiguo 17/02/2011, 08:19
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: ¿Que tiene de malo este código?

El código está creado en el editor de VB6, y/o parte de este lo ha sacado de ejemplos de VB6, pero sin embargo, la declaración que le generaba el error es una declaración que solo .NET admite.
En VB6 no se puede declarar una variable y asignarle valor al mismo tiempo. En .NET si.
A eso me refería.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #14 (permalink)  
Antiguo 20/02/2011, 19:17
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: ¿Que tiene de malo este código?

Cita:
Iniciado por A.H.H Ver Mensaje
HOLA HiguaiiN

Primero te dire, que CULD no tiene razon al llamarte Bruto, ya que a Franko1809, le funciona el codigo ya que su ruta no contiene las carpetas que tu tienes en tu ruta, osea que usa solo el app.path + un archivo de texto, que NO ES LO QUE QUIERES TU, ya que en tu ejemplo usas el app.path + un directorio + subdirectorio +archivo de texto.

Aclarando esto, te dire que el error te lo tira porque primero debes crear el directorio \database y despues el subdirectorio \new_habbo, y una vez que existen estas dos carpetas ya puedes abrir el archivo de texto \hcdays.txt
Osea el error es porque no encuentra la ruta de esas dos carpetas, ya que el archivo de texto esta metido dentro del subdirectorio \new_habbo.

En vb6 se puede crear el directorio como sabemos con mkdir pero para crear un subdirectorio se complica la cosa.

hacemos MkDir (App.Path & "\database") para crear la primera carpeta.

hacemos MkDir (App.Path & "\database") & ("\new_habbo") para crear dentro el subdirectorio

ANTES de crear las carpetas deberias preguntar con DIR en el FORM_LOAD si existe la ruta, entonces compruebas que si no existe que la cree, y que si existe que lea o guarde.

PODRIA SER ESTE TU CODIGO:


espero hayas entendido de que al crear o leer un archivo de texto, primero la ruta debe de existir si no dara error.

salu2
Pf , totalmente un crack , tu código me vale de 100 para que lo sepas , ya pude hacer lo que queria , estaba encallado pero pude gracias a tí , me parece que los demás no tenian razón pero igual gracias por ayudar

Gracias mil veces ati A.H.H por ayudarme ^^
  #15 (permalink)  
Antiguo 25/02/2011, 18:22
Avatar de hugo180486  
Fecha de Ingreso: septiembre-2007
Mensajes: 199
Antigüedad: 16 años, 8 meses
Puntos: 3
Respuesta: ¿Que tiene de malo este código?

Cita:
Iniciado por pkj Ver Mensaje
El código está creado en el editor de VB6, y/o parte de este lo ha sacado de ejemplos de VB6, pero sin embargo, la declaración que le generaba el error es una declaración que solo .NET admite.
En VB6 no se puede declarar una variable y asignarle valor al mismo tiempo. En .NET si.
A eso me refería.

Saludos
Una variagble no, pero una constante si y creo que ahi esta declarando una constante o me equivoco?

Etiquetas: malo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:39.