problema con archivo
Publicado por rafa (3 intervenciones) el 31/07/2007 20:23:27
Estoy haciendo un ejercicio con archivos. Tengo 3 archivos, uno con preguntas, el otro con las respuestas de cada pregunta y un tercero para ver si la pregunta ya fue cargada, evitando repetir las preguntas. En un textbox coloco la cantidad de preguntas y respuestas que quiero generar y luego empiezo a generar.
Entonces busca en el archivo de preguntas y empieza a cargar cada pregunta en un listview, buscando luego su respectiva respuesta en el otro archivo y cargàndolo en otro listview
Bien el problema que tengo, es que coloco la cantidad de preguntas y respuestas que quiero generar pero después de la primer pregunta y respuesta cargada me salta un error con la búsqueda de la pregunta.
Si alguien me puede indicar el problema o como hacerlo de otra forma le estoy eternamente agradecido.
preguntas.txt
"1-¿está la llama que llama?"
"2-¿Quién es tulito?"
"3-¿como se llama la novia del melli?"
"4-¿quien es ramón?"
"5-¿que es vb?"
respuestas.txt
"1-sí, con el chivo que chiva"
"2-el hombre show"
"3-ramoma"
"4-un tipito"
"5-lenguaje de prog"
repeticion.txt
"1"
Private Sub Command3_Click()
Dim cont As Integer
Open App.Path & "\preguntas.txt" For Input As #5
'bandera para la primera vez que abro el archivo
ban = 0
'contador para la cantidad de preguntas que quiero
cont = 0
'le paso cuantas preguntas quieren ser cargadas
cantpreg = Me.txtcantpreg
While cont <> cantpreg Or Not EOF(5)
Input #5, pregleida
'busco la pos del nro de pregunta
varnropos = InStr(pregleida, "-") - 1
'encuentro el nro
varnro = Mid(pregleida, varnropos, 1)
'bandera para ver si ya esta cargada la pregunta
iguales = 0
'cuando abre por primera vez el archivo
If ban = 0 Then
'abro el archivo para empezar a grabar las preguntas ya cargadas
Open App.Path & "\repeticion.txt" For Output As #6
Write #6, varnro
'cargo la pregunta leída en el listview
Me.listviewpreg.View = lvwList
Me.listviewpreg.ListItems.Add = pregleida
'cierro el archivo repeticion.txt
Close #6
'activo la bandera
ban = 1
'busco la respuesta con el nro de pregunta
Open App.Path & "\respuestas.txt" For Input As #7
While Not EOF(7)
Input #7, filaleida
varnropospreg = InStr(filaleida, varnro)
varnropregbuscada = Mid(filaleida, varnropospreg, 1)
If varnro = varnropregbuscada Then
'agrego en otro listview la respuesta
With Me.listviewresp
.View = lvwList
.ListItems.Add = filaleida
End With
End If
Wend
'se aumente el contador del while para la cant. de preguntas
cont = cont + 1
'cierro el archivo respuestas.txt
Close #7
Else 'cuando ya no es la primera vez que lee
'abro el archivo de repeticiones
Open App.Path & "\repeticion.txt" For Input As #6
While Not EOF(6)
Input #6, varrepet
'me fijo si la pregunta leida del archivo ya fue cargada antes
If varrepet = varnro Then
iguales = 1
End If
Wend
'cierro el archivo repeticion.txt
Close #6
If iguales <> 1 Then
Open App.Path & "\repeticion.txt" For Append As #6
Write #6, varnro
Close #6
'agrego la pregunta cargada al listview
With Me.listviewpreg
.View = lvwList
.ListItems.Add = pregleida
End With
'busco la respuesta con el nro de pregunta
Open App.Path & "\respuestas.txt" For Input As #8
While Not EOF(8)
Input #8, filaleida
varnroposresp = InStr(filaleida, varnro)
varnrorespbuscada = Mid(filaleida, varnroposresp, 1)
If varnro = varnrorespbuscada Then
'agrego en otro listview la respuesta
With Me.listviewresp
.View = lvwList
.ListItems.Add = filaleida
End With
End If
Wend
Close #8
'aumento el contador para la cant.de preguntas
cont = cont + 1
End If
End If
'cierro el bucle
Wend
'cierro el archivo de preguntas
Close #5
End Sub
Entonces busca en el archivo de preguntas y empieza a cargar cada pregunta en un listview, buscando luego su respectiva respuesta en el otro archivo y cargàndolo en otro listview
Bien el problema que tengo, es que coloco la cantidad de preguntas y respuestas que quiero generar pero después de la primer pregunta y respuesta cargada me salta un error con la búsqueda de la pregunta.
Si alguien me puede indicar el problema o como hacerlo de otra forma le estoy eternamente agradecido.
preguntas.txt
"1-¿está la llama que llama?"
"2-¿Quién es tulito?"
"3-¿como se llama la novia del melli?"
"4-¿quien es ramón?"
"5-¿que es vb?"
respuestas.txt
"1-sí, con el chivo que chiva"
"2-el hombre show"
"3-ramoma"
"4-un tipito"
"5-lenguaje de prog"
repeticion.txt
"1"
Private Sub Command3_Click()
Dim cont As Integer
Open App.Path & "\preguntas.txt" For Input As #5
'bandera para la primera vez que abro el archivo
ban = 0
'contador para la cantidad de preguntas que quiero
cont = 0
'le paso cuantas preguntas quieren ser cargadas
cantpreg = Me.txtcantpreg
While cont <> cantpreg Or Not EOF(5)
Input #5, pregleida
'busco la pos del nro de pregunta
varnropos = InStr(pregleida, "-") - 1
'encuentro el nro
varnro = Mid(pregleida, varnropos, 1)
'bandera para ver si ya esta cargada la pregunta
iguales = 0
'cuando abre por primera vez el archivo
If ban = 0 Then
'abro el archivo para empezar a grabar las preguntas ya cargadas
Open App.Path & "\repeticion.txt" For Output As #6
Write #6, varnro
'cargo la pregunta leída en el listview
Me.listviewpreg.View = lvwList
Me.listviewpreg.ListItems.Add = pregleida
'cierro el archivo repeticion.txt
Close #6
'activo la bandera
ban = 1
'busco la respuesta con el nro de pregunta
Open App.Path & "\respuestas.txt" For Input As #7
While Not EOF(7)
Input #7, filaleida
varnropospreg = InStr(filaleida, varnro)
varnropregbuscada = Mid(filaleida, varnropospreg, 1)
If varnro = varnropregbuscada Then
'agrego en otro listview la respuesta
With Me.listviewresp
.View = lvwList
.ListItems.Add = filaleida
End With
End If
Wend
'se aumente el contador del while para la cant. de preguntas
cont = cont + 1
'cierro el archivo respuestas.txt
Close #7
Else 'cuando ya no es la primera vez que lee
'abro el archivo de repeticiones
Open App.Path & "\repeticion.txt" For Input As #6
While Not EOF(6)
Input #6, varrepet
'me fijo si la pregunta leida del archivo ya fue cargada antes
If varrepet = varnro Then
iguales = 1
End If
Wend
'cierro el archivo repeticion.txt
Close #6
If iguales <> 1 Then
Open App.Path & "\repeticion.txt" For Append As #6
Write #6, varnro
Close #6
'agrego la pregunta cargada al listview
With Me.listviewpreg
.View = lvwList
.ListItems.Add = pregleida
End With
'busco la respuesta con el nro de pregunta
Open App.Path & "\respuestas.txt" For Input As #8
While Not EOF(8)
Input #8, filaleida
varnroposresp = InStr(filaleida, varnro)
varnrorespbuscada = Mid(filaleida, varnroposresp, 1)
If varnro = varnrorespbuscada Then
'agrego en otro listview la respuesta
With Me.listviewresp
.View = lvwList
.ListItems.Add = filaleida
End With
End If
Wend
Close #8
'aumento el contador para la cant.de preguntas
cont = cont + 1
End If
End If
'cierro el bucle
Wend
'cierro el archivo de preguntas
Close #5
End Sub
Valora esta pregunta


0