Programación General > Pascal
Leer Y Modificar Archivo .dat
Enko:
Un problema menos :)
Nos sigue faltando que funcione.
El problema aqui es que yo no se la estructura correcta del archivo y supongo que ves tampoco pues estas teniendo ese problema.
una pregutna: ¿De donde conseguiste la info de ese archivo o quien te lo paso?
una cosa que podrias intentar es ejecutar tu codigo una sola vez, es decir, no hacerlo dentro del bucle "while not eof".
Si funciona, pueden suceder dos cosas:
*tenes mal los records (lo mas probable):
tu estructura no concide con la del archivo, por eso que al final, intenta leer datos que no existen en disco, ahí sale ese error de lectura.
*el archivo está corrupto (muy poco probable pero no imposible):
el archivo le fatlan datos al final y cuando intentas leer la estructura completa, se trunca y tira el error.
la unica solucion que tendrias disponible solo con los datos de este hilo es usar un editor hexadecimal y comprobar la estructura vos mismo.
La otra, seria averigual la estructura correcta del que te paso el arhcivo.
Si vos lo creaste, pues no se cual es el problema entonces.
--- Citar ---with X do
begin
end
[CODE]
Es de free pascal y de Delphi. Turbo pascal si mi memoria no falla, no tiene esas intrucciones.
--- Fin de la cita ---
jeraco:
enko probe el programa agregando un contador de registro (i:=i+1;) y validando con los 300 registros es decir and (i<=300)) y no revienta pero no hace los cambios sobre las variables del archivo. te envie un msg a tu correo electronico encoreaver@xxxxx con toda la libreria de la estructura de los archivos de saint asi como el archivo aclie.dat a ver que puedes encontrar. Te agradeceria mucho si puedes ayudarme en esto
Gracias de antemano por tu pronta respuesta
Enko:
Hola, leí tu mail y te lo respondí.
Por sierto, si tu problema es ahora que no puedes guardar los campos modificados en el archvio aclie.dat pues intenta guardar todos esos registros en un archivo temporal llamado por ejemplo temp.dat y luego lo renombras por aclie.dat y listo.
jeraco:
Gracias, pero ese no es el problema, al igual que el archivo de clientes tambien hay que cambiar la data de inventario, proveedores, cxp, cxc pero a partir del º1ero de enero por el cambio a Bs. Fuerte, es decir en este momento funcionan bien pero el Saint no trae una opcion que te permita dividir por 100o todos los campos y es por eso que hay que tratar de hacer una aplicacion externa que modifique los archivos .dat del sistema. Comoveras en el email, la informacion de todos esos archivos en cuanto a su estructura se encuentra en un archivo llamado tipos.doc que a su vez es la liberia con que supuestamente ellos (los programadores de Saint) construyeron la data (record) de cada uno de los archivos aprod, aclie, aprov, acXcc, acxcp.
Saludos
Enko:
Por sierto, este sistema Saint, es para Windows Verdad?
Este codigo funciono bien supongo. Usé Delphi aunqeu tambien funcionaría con Free Pascal. No tuve ningun error al correr y al parecer los cambios se hicieron bien.
--- Código: Text --- program Project2; {$APPTYPE CONSOLE}{$DEFINE COLOMBIA} uses SysUtils, Tipos in 'tipos.pas';var F: File of Regcliente; P: RegCliente;begin Assign(F,'aclie.dat'); reset(F); while not Eof(F) do begin read(F,P); with P.Special do begin maxcredito:=maxcredito/1000; saldop:=saldop/1000; montomax:=montomax/1000; montomaxcre:=montomaxcre/1000; end; seek(F,filepos(F)-1); write(F,P); end; close(F); ReadLn;end. Te adjunto provisoriamente el archivo aclie.dat modificado. Pruebalo y me contas.
La contraseña te la paso por mail.
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa