|    
			
				19/04/2010, 10:44
			
			
			  | 
  |   |  |  |  |  Fecha de Ingreso: noviembre-2009 
						Mensajes: 701
					 Antigüedad: 15 años, 11 meses Puntos: 53 |  | 
  |  Respuesta: Importar de un .dat o txt a MSFlexGrid  
  Respecto al tema de loa archivos, te comento que la apertura de un archivo en modo RANDOM hace que se mantengan todos los datos del fichero por lo tanto suponte que tienes los siguiente registros:
 1_AAAAAAAAAAAAAAAAA
 2_BBBBBBBBBBBBBBBBB
 3_CCCCCCCCCCCCCCC
 4_DDDDDDDDDDDDDDD
 
 tu puedes obviamente añadir registros al final tal como hacía en el post original como machacar sobre uno de los existentes para sustituir sus datos. Si un registro tiene una longitud de 256 bytes independientemente de que su campos esten llenos o vacios por lo tanto un campo STRING de 15 posiciones ocupa los mismo si contiene PEPE que si contiene HERMENEGILDO
 
 Mientras no leas un Registro la UDT que tengas definida estará vacia, el hecho de abrir el fichero simplemente significa que está abierto.
 
 La funciones FREEFILE te devuelve el siguiente canal disponible para ser abierto por lo tanto no puedes asignarla cada vez aunque evidentemente podrías tener un fichero abierto con distintos canales siempre que definas la cláusula SHARED para compartir archivos, por ejemplo
 
 OPEN "CLIENTES" .... As #1 Len = 256
 
 OPEN "CLIENTES" .... As #2 Len = 256
 
 Si tu lees el registro 10 del archivo #1 te devolverá lo mismo que si lees el 10 del Archivo #2 puesto que ambos son el mismo fichero.
 
 Pero atención si tienes que borrar el archivo, y sólo cierras el #1 no te permitirá hacerlo porque el #2 sigue abierto y es el mismo.
 
 No tiene mucho sentido el ejemplo de abrir 2 archivos pero es para que te hagas una idea.
 
 Respecto al tema de BORRAR registros de un archivo RANDOM lo que suele hacer es grabar un registro con un determinado valor que tu sepas no puede formar parte del archivo o incluso es suficiente con una única posición y entonces tu en el proceso decides como actúas con el registro.
 
 Imagínate que decides poner un campo String o Bolean (tu decides) en mitad de una UDT que significa SUPRIMIDO por ejemplo Eliminado As Boolean
 
 Cuando tu grabes este registro lo grabas como Eliminado = True y entonces significará para ti que lo consideras suprimido, independientemente de que puedas seguir accediendo a su información.
 
 En este caso cuando leas un registro debes comprobar si Eliminado = True porque de ser así debes omitirlo en tus procesos por ejemplo, siguiendo lo que vimos anteriormente
 
 Do
 Registro = Registro + 1
 LeerRegistro Registro
 ' Si es fin de Registros, salimos del bucle
 IF Registro = -1 Then Exit Do
 
 If Not(Registro.Eliminado) Then
 RegistrosValidos = RegistrosValidos + 1
 ' Efectuar tu proceso sobre el registro
 Else
 RegistrosSuprimidos = RegistrosSuprimidos + 1
 ' Recuerda que aunque lo consideras suprimido el resto sigue ahí, podrías
 ' reactivarlo simplemente haciendo Suprimido = False y regrabando sobre el
 End If
 Loop
 
 MsgBox "Válidos " & RegistrosValidos
 MsgBox "Eliminados " & RegistrosSuprimidos
 
 
 Saludos
 
				__________________Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
 Recuerda: Decir gracias, poco cuesta y mucho vale ...
 
     |