FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
problema con ficheros
hola amigos ¡
Estoy intentando hacer una agenda,para almacenar datos de mis contactos(Nombre,Direccion,Telefono), todos ellos que iran almacenados en un fichero .DAT. Hasta ahi no hay problema. el problema me viene cuando abro el programa y abro un fichero para tratar con el. Cada vez k intento dar un alta,lo que hace es sobreescribirme algun registro de los que tenia almacenado. el error se cual es,no me posiciono al final del fichero,pero...¿Como puedo posicionarme al final del fichero para que cada vez que vaya a dar una alta no me sobreescriba ningun registro de los que tengo almacenados??En serio e probado 20mil cosas y no doy con la tecla...... |
#2
|
||||
|
||||
Pon el código que utilizas, lo más probable es que no estes abriendo el fichero en modo añadir, y por eso te borra lo anterior.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
codigo
Este es el codigo(sin controlar errores por si me mete algun campo vacio) Última edición por dec fecha: 29-11-2005 a las 00:43:41. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!! |
#4
|
||||
|
||||
Si pero te falta poner el código que abre el fichero, para saber en que modo lo estás abriendo.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
||||
|
||||
La pregunta es que seguramente estás utilizando Rewrite, cuando tendrías que utilizar Reset.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
|||
|
|||
Problemas con ficheros
El Reset se usa para abrir el fichero,cuando mi programa llega a ese punto el fichero ya lo tengo abierto. Sigo sin encontrar el camino
|
#7
|
|||
|
|||
Problemas con ficheros
Quizas no me haya explicado con claridad. Vamos a ver.
En el Programa tengo una opcion que es para Abrir un fichero. Una vez abierto,tengo dos opciones, Visualizar o añadir datos. Para visualizar uso dos botones (para ir hacia delante e ir hacia detras) Siendo el valor de Sum siempre 0 cuando entramos en esta opcion. Ahora necesito meter un registro, uso el siguiente codigo:
Aqui es donde empiezan los problemas,ya que me deja meter los registros que yo quiera, pero para que lo haga sin sobreescribirme ninguno, tengo que irme a la opcion de cisualizar y mostrarlos todos hasta el final. Si empiezo a visualizar datos y paro en el registro numero 3 de 20 que tengo me va a sobreescribir el registro numero 3 por el que añada. La solucion es decirle que cada vez que quiera dar un alta se vaya al ultimo registro de todos, pero no hay manera de que me salga eso. Espero esta vez haberme explicado con claridad y siento cualquier molestia ocasionada, llebo tan solo 2 semanas intentando aprender POO y para mi todo esto es muy nuevo(partiendo de la base que no e programado en mi vida).Salu2 y enhorabuena por esta Web, ya que contestais extremadamente rapido. Última edición por dec fecha: 29-11-2005 a las 00:44:42. Razón: ¡¡Encerrad el código fuente entre las etiquetas [DELPHI] ... [/DELPHI]!! |
#8
|
|||
|
|||
Por lo que veo estás trabajando con un fichero tipeado. Para crear el archivo por 1ª vez se utiliza el procedimiento Rewrite, para el resto de las veces se utiliza el procediemiento Reset, después se sitúa el puntero sobre el registro deseado con el procedimiento Seek, para leerlo, o si lo situas trás el último puedes hacer un write para añadir un registro.
Cuando abres un fichero tipeado, se usa Seek para posicionar el puntero, tanto para lectura como escritura. Sólo depende de que utilices el procedimiento Read o Wrire respectivamente. ´ Al abrir el archivo, el puntero se sitúa al principio del mismo. Si haces rewrite, para añadir un registro o varios, lo que estás haciendo es sobreescribir el fichero con lo que al cerrarlo habrás perdido la información anterior. Espero haberte servido de ayuda. |
#9
|
|||
|
|||
Muy bien ¡
Por lo que me has dicho,mi programa ahora mismo va perfecto, la cuestion es....¿Como puedo poner un puntero justo detras del ultimo registro que tenga el fichero? Es decir, esta claro que tengo que hacer un Seek("Nombre_logico_de_mi_fichero",.......); pero no sé que poner en esos puntos suspensivos ¡¡ |
#10
|
|||
|
|||
problemas con ficheros
Solucionado con algo tan simple como seek(nuevo_fichero,filesize(nuevo_fichero)); Debi poner el filesize.....
|
#11
|
|||
|
|||
De todas formas las función Filesize siempre te devolverá un registro más de los que hayas metido, porque al crear el archivo siempre coloca en la cabecera del mismo el registro "0", en el cual, si te interesa, puedes almacenar información relativa al propio archivo.
Siento no haberte contestado antes. Estaba de viaje. |
|
|
|