Hola a todos..
Soy estudiante de Ing. Informatica.. y bueno en uno de los cursos basicos.. estamos usando el pascal.
Bueno una de mis dudas es la siguiente.. espero me ayuden.. gracias.
Para manejo de archivos hacemos generalmente esto
Assign(Arch,'nombrearchivo.bin');
Reset(Arch);
.
.
.
.
.
Close(Arch);
Mi pregunta es que pasa si hago esto?
Assign(Arch,'nombrearchivo.bin');
Reset(Arch);
.
.
Close(Arch);
Reset(Arch);
close(Arch);
Reset(Arch);
close(Arch);
A lo que me refiero es que me dijeron que despues de hacerle "close" no es correcto hacerle un "reset".. me dijeron que tengo que hacerle nuevamente un "assign" que de cierto hay en esto.. me dicen que la direccion del archivo en memoria se pierde con el Close..
Me podrian dar una explicacion sobre esto?.. gracias..
Pues te dieron una explicación muy mala. Eso de ´despues de hacerle "close" no es correcto hacerle un "reset"´ eso parece consejo de cocina o algo parecido.
En informática uno debe saber exactamente que sucede, en este caso al hacer assign, reset y close.
En delphi y t.pascal v7 es totalmente correcto hacer esto (comprobado con memproof y con la documentación del compilador):
Para delphi:
AssignFile(Arch,'nombrearchivo.bin');
Reset(Arch);
CloseFile(Arch);
Reset(Arch);
CloseFile(Arch);
Para t.pascal v7
Assign(Arch,'nombrearchivo.bin');
Reset(Arch);
Close(Arch);
Reset(Arch);
Close(Arch);
Esta claramente indicado que assign no se mete con los "file handle", eso corresponde al par Reset y Close. De hecho en el siguiente código el segundo assign está sobrando, ocupando espacio en RAM y tiempo de cpu inutilmente:
Assign(Arch,'nombrearchivo.bin');
Reset(Arch);
Close(Arch);
Assign(Arch,'nombrearchivo.bin');
Reset(Arch);
Close(Arch);
.. me dicen que la direccion del archivo en memoria se pierde con el Close..
El "file handle" queda liberado, y vuelves a pedir uno con el "reset"
Textual de la documentación de TP7:
After a call to Assign, the association
between F and the external file continues to
exist until another Assign is done on F.
Asi que lo que no pierdes es la asociación con el archivo externo, el file handle queda liberado pero de todos modos al hacer otra vez el reset reservarás uno nuevo.
If F is already open, it is first closed and then reopened.
Y de hecho si el archivo no estaba cerrado y lo abres NUEVAMENTE el compilador te hace el favor de cerrar primero el archivo y luego abrirlo.
Esperemos que el que te dijo "no es correcto" tenga por lo menos la intención de aprender algo.