Archivos !!!!

sebastian
21 de Abril del 2004
Hola, estoy usando un archivo para guardar algunos datos, el tema es que no puedo borrar un intems en particular. esto es lo que tengo .
para guardar:
Open "c:programacategorias.cat" For Append As #1
datos.rtitulo = Text1.Text
Write #1, datos.rtitulo
Close #1


y para leer :

Dim datos As registro
Open "c:programacategorias.cat" For Input As #1
Do While Not EOF(1)
Input #1, datos.rtitulo
List1.AddItem datos.rtitulo
Loop
Close #1

Como puedo hacer para borrar un registro cualquiera que se encuentre en el archivo???.-
Tiene que ser indexsado de alguna forma ??
Gracias !!


en?
21 de Abril del 2004
hola,
para trabajar con registros y tipos de datos definidos por el usuario es aconsejable, (o mejor dicho, és más cómodo), utilizar el modo de acceso aleatorio.

si por ejemplo tienes

Type Registro
IdDato As Integer
rTitulo As String * 25
End Type

para añadir registros puedes hacer


Open "c:programacategorias.cat" For Random As #1 Len = Len(Datos)
put #1, LOF(1) / Len(Datos) + 1, Datos
Close #1


Entonces, si tienes los datos cargados en una lista, puedes acceder a ellos directamente por su número de registro. Supongamos que estan en un ListBox,

Open "c:programacategorias.cat" For Random As #1 Len = Len(Datos)
Get #1, List1.ListIndex + 1, Datos
Close #1
MsgBox Datos.rTitulo


para modificar el dato es lo mismo que el acceso, pero en lugar del "Get #1", con el "Put #1"

Y para eliminarlo, sería:

Dim Cont As Integer

Open "c:programacategorias.cat" For Random As #1 Len = Len(Datos)
Open "c:programacategorias.cat.temp" For Random As #2 Len = Len(Datos)
For cont=1 to LOF(1) / Len(Datos)
get #1,cont,dato
if cont<>List1.ListIndex+1 Then put #2, ,dato
Next
Close #1: Close #2
Kill "c:programacategorias.cat"
Name "c:programacategorias.cat.temp" As "c:programacategorias.cat"


Saludos.