border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

Cuenta Bancaria en EEUU
  #1 (permalink)  
Antiguo 08-02-2007, 10:45:50
Gran Participación en el Foro
 
Registrado: ene 2007
Posts: 127
visual_v Valoración +2
Predeterminado duda con random

Una vez más acudo a vos en busca de soluciones

Os planteo mi problema...
Tengo una caja de texto, un boton y un fichero con distintas lineas.

Contenido del fichero:
Código:
4 -> indica la cantidad de lineas a tratar
0 -> numero de linea
00 -> dato que introduzco en la caja de texto
1 -> numero de linea 
11 -> dato que introduzco en la caja de texto
2 -> numero de linea
22 -> dato que introduzco en la caja de texto
3 -> numero de linea
33 -> dato que introduzco en la caja de texto
Lógicamente las flechas y comentarios no los tengo puestos en el fichero, es para aclararos el funcionamiento.

Codigo:
Código:
Private Sub Command1_Click()

Dim cantidad As String
Dim j As Integer
Dim linea As String

    Open App.Path & "\random.txt" For Input As #1
    Line Input #1, cantidad
    
    Randomize
    j = Rnd(cantidad)
    Label1.Caption = j
    
       Line Input #1, linea
                
                If linea = j Then
                   Line Input #1, x
                   Text1.Text = x 'vamos añadiendo los caracteres leídos a Text1
                Else
                    While linea <> j
                        Line Input #1, x
                        linea = x
                    Wend
                    If linea = j Then
                         Line Input #1, x
                        Text1.Text = x 'vamos añadiendo los caracteres leídos a Text1
                    End If
                End If
        
        Close #1
        
    
    
End Sub
Mi idea es que j => numero aleatorio coincida con el numero de linea, entonces si el numero de linea coincide con j leo el "contenido" de linea y lo muestro en la caja de texto. Es decir si por ejemplo j = 0 y linea = 0 muestro en la caja de texto 00 si no son iguales recorro el fichero hasta encontrar el numero de linea que coincide con numero aleatorio (j).

Mi duda viene cuando compruebo si el programa funciona y entonces descubro que solo me origina los numeros aleatorio 0 y 1, ¿porque?
GRACIAS !!!

Si no me explico bien, por favor decidmelo
Responder Con Cita
  #2 (permalink)  
Antiguo 08-02-2007, 10:52:50
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.271
acalanto ha deshabilitado la reputación
Predeterminado

Para generar número aleatorios en un rango de límite determinado, debes emplear la siguiente fórmula


NumeroAleatorio = Int((LIMITESUP * Rnd) + 1)

donde LIMITESUP representa el máximo valor que deseas (Valores entre 0 y LIMITESUP)


Espero te resulte útil.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 08-02-2007, 11:31:25
Gran Participación en el Foro
 
Registrado: ene 2007
Posts: 127
visual_v Valoración +2
Predeterminado

Ante todo agradecerte Acalanto tu ayuda.

Tu propuesta me viene casi bien, ¿pq casi bien?
Por que cuando escribo...

Código:
 j = Int((cantidad * Rnd) + 1)
Me va originando numeros, y cuando j = 4 me muestra un error: "la entrada de datos ha sobrepasado el final de archivo"
Si quito el "+1" lo hace bien pero solo hasta el 3, logicamente exluye la última línea

¿En que me equivoco?
GRACIAS !!
Responder Con Cita
  #4 (permalink)  
Antiguo 08-02-2007, 12:54:53
Moderador
 
Registrado: dic 2002
Ubicación: Madrid
Posts: 4.271
acalanto ha deshabilitado la reputación
Predeterminado

Pero esto te ocurre porque en ningún momento controlas que has rebasado el tamaño del fichero. Intentas ller más allá de su capacidad y por lo tanto, se produce el error que manifiestas.

La verdad es que me resulta complejo comprender la estructura de fichero que tienes montada. No te parece que sería mucho mejor acceder a la información mediante un fichero tipo Random (acceso aleatorio) o Binario ??

En todo caso prueba el siguiente código a ver si te funciona:


Código:
Private Sub Command1_Click() 
    Dim cantidad     As String 
    Dim j                As Integer
    dim x                As String 
    Dim linea          As String 
    dim exist          As boolean
    'Aseguramos errores inesperados
    On Local Error resume next 
    'Apertura del fichero de datos 
    Open App.Path & "\random.txt" For Input As #1 
    Line Input #1, cantidad 
    'Generamos el número pseudo-aleatorio
    Randomize 
    j = Int((cantidad * Rnd) + 1)
    'Verificamos que no sobrepase el valor de cantidad
    if j > cantidad then j=cantidad
    'Informamos del número a buscar 
    Label1.Caption = j
    'Lectura de fichero controlando el final del mismo 
    exist = false 
    do until eof(1)
       Line Input #1, linea 
       if linea = j then          
                   'Lectura del dato 
                   Line Input #1, x 
                   exist = true
                   'Encontrada la primera coincidencia, abandonamos el bucle
                   exit do
       end if 
    Loop
   Close #1 
   'Asignamos resultado
   if exist = true then 
       Text1.Text = x 
   else
       Text1.Text="no encontrado"
   end if 
End Sub

Fíjate bien que en el código que adjuntas dejas muchas cosas al azar; otras no se corresponden demasiado con la estructura de fichero que manifiestas al inicio de tu planteamiento. Dejar cosas al azar se traduce, en la mayor parte de los casos, en obtener datos que no corresponden a lo esperado, además de provocar errores incontrolados de la aplicación, con las nefastas consecuencias que siempre supone y que ya conocemos.
__________________
Un cordial saludo
-Acalanto-

Madrid - España

Visual Basic
Videos Programacion
Foro Programacion
Tutoriales Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Otro problema con archivos random @nit@ Visual Basic 6.00 1 22-02-2008 20:54:46
Archivos Random @nit@ Visual Basic 6.00 2 21-02-2008 00:43:20
Duda con VB visual_v Visual Basic 6.00 2 10-10-2007 17:01:28
Random un arreglo fallitas185 Visual Basic.NET 2003 & 2005 0 28-06-2007 19:04:42
duda vbprog Visual Basic 6.00 2 02-05-2007 07:42:45


La franja horaria es GMT. Ahora son las 03:52:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right