Problemas con modificacion de registros
Publicado por Kioon (12 intervenciones) el 20/05/2005 21:06:14
Hola a tod@s.
Bueno, ante todo muchas gracias por la ayuda que nos dais a todos. Quiero crear un registro para almacenar un numero. Ese número lo quiero tener para asignarlo como código de un supermercado e ira de 100 a X. No quiero utilizar un ARRAY ya que cuando cierre los ficheros y los vuelva a abrir deseo que se me asigne en el proximo pedido el siguiente numero consecutivo. La asignacion de tipos es de la siguiente forma:
TYPE
tipoNumero = RECORD
catalogo : INTEGER;
END;
datosSysNum=FILE OF tipoNumero;
VAR
datosN : datosSysNum;
n : tipoNumero;
Ahora quiero una funcion que cuando la llame si no esta creado el fichero NUM.DAT lo cree y el campo n.codigo lo inicie a 100 y si esta creado que AUMENTE en 1 el codigo lo guarde y lo devuelva. He intentado hacerlo de la siguiente forma, pero nunca me posiciono en el sitio correcto. Pienso que como solo vamos a utilizar el miosmo siempre sera SEEK (datosN,0):
FUNCTION devNumero:INTEGER;
VAR
n : tipoNumero;
aux,nuevo: INTEGER;
BEGIN
ASSIGN (datosN, 'NUM.DAT');
{$I-} RESET (datosN); {$I+}
IF (IOresult<>0) THEN
BEGIN
REWRITE (datosN);
SEEK (datosN,0);
n.catalogo:=100;
WRITE(datosN,n);
CLOSE(datosN);
devNumero:=aux;
END
ELSE
BEGIN
SEEK (datosN,0);
aux:=n.catalogo;
nuevo:=aux+1;
n.catalogo:=nuevo;
WRITE (datosN,n);
CLOSE (datosN);
devNumero:=nuevo;
END;
END;
Pienso que esta todo bien, pero cuando se inicia por primera vez (se crea el fichero) me da 100 (esto esta bien) la siguiente 80 y la incrementa una vez pero ya nunca la guarda ¿Que hago?
Saludos
Kioon
Valora esta pregunta


0