Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Juan Luis López en Marzo 01, 2013, 08:14:29 pm
-
hola a todos!
tengo un problema y me estoy volviendo loco:
tengo un archivo txt con datos de manos de poker...
el archivo tiene el siguiente fiormato:
Jugador1: pasa
Jugador2: pasa
Jugador3: sube
jugador4: se tira
Jugador1: sube
Jugador2: pasa
Jugador3: pasa
jugador4: se tira
Jugador1: sube
Jugador2: sube
Jugador3: sube
jugador4: se tira
lo que quiero hacer es que al leer el archivo y detectar el nombre del jugador se cree otro archivo con el nombre de dicho jugador...
para ello lo que hago es leer el archivo linea a linea, y despues, de cada linea guardo en una variable el nombre del jugador
a continuacion creo el archivo con el nombre de dicho jugador
Dim Linea as string
Dim numbrejugador As String
Dim libre as integer
libre = freefile
Dim libra As Integer
libra = FreeFile
Open App.Path & "\Temp.txt" For Input As #libre
While Not EOF(1)
Line Input #libre, linea
nombrejugador = Between(linea, "", ":") 'Esta funcion es una que retorna la cadena que hay entre otras 2 cadenas
Open App.Path & "\" & nombrejugador & ".txt" For Append As #libra 'Aqui pongo append porque los nombres se repiten en temp.txt y no quiero que se borren los datos al crear otro archivo con output
Close #libra
Wend
Close #libre
Me tira el error de que el archivo ya esta abierto...aunque lo haya cerrado con close #libra
Alguna idea?
-
Pon el libra = FreeFile antes de llamar al segundo open, en el medio del bucle
-
Hola, independientemente de que te vaya a funcionar con la correccion que te indica Raul, el tema es que creo debes entender el porque, aparte de que hay otro error en el código lo pual puede hacer que funcione o no, dependiendo del resto de código:
El motivo es que al hacer Libre = FreeFile y no abrir el archivo, si FreeFile te devuelve el valor #1, la siguiente instruccion probablemente te devuelve el mismo valor ya que al no haber efectuado el Open, el canal libre sigue siendo el mismo, por tanto es evidente que debes hacerlo tal como te indican.
Por otro lado el error que te comento es que tienes la sentencia While Not Eof(1) cuando deberias tener While Not Eof(Libre) ya que es lo correcto como comprenderás.
Saludos