Pascal/Turbo Pascal - Ayuda Archivo.Dat

 
Vista:

Ayuda Archivo.Dat

Publicado por Miguel (2 intervenciones) el 28/10/2007 19:47:44
Saludos colegas:

Amigos necesito la rutina para accesar un archivo llamado binario DAT, lo que nesecito es leer el campo donde se almacena 6 variables para luego dividirlos entre mil y luego reemplazar cada uno de los campos con el resultado obtenido, Volver a guardar el Archivo DAT y que quede funcionando.

Si alguien que me pueda ayudar bien sea a programar la rutina o a darme el codigo que debo usar. Yo puedo facilitar el Archivo Dat a modificar. No soy programador en estos lenguajes pero conozco algo del tema... Soy Diseñador de Paginas Web y colega tecnico. Mas no programador.

Si alguien desea ayudarme puede dejarme su correo o agregar el mio al messenger y yo le paso el archivo Dat mas la informacion que debe modificar y me pasas la rutina.

Hoy por mi y mañana por ti... Estamos para ayudarnos... Gracias

Saludos Colegas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda Archivo.Dat

Publicado por Alexis (44 intervenciones) el 28/10/2007 21:36:05
Buenas tardes q tal? Lo mas que puedo hacer por ti es mandarme el codigo de un programa q se encarga de almacenar, modificar y listar datos q se encuentran en un archivo .dat, pero eso sera para el dia martes en la tarde si estas pendiente me avisas...

exito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Diego Romero (996 intervenciones) el 29/10/2007 04:08:11
Además del archivo en cuestión ¿tienes su definición de registro?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Miguel (2 intervenciones) el 29/10/2007 04:20:12
Pues la definicion de los registros tal cual como las guarda el programa no... Se que se tiene que modificar... pero no se como hacerlo... y menos el algoritmo o la division que debo hacer en turbo pascal para que un registro lo divida entre 1000 y me guarde el resultado en el mismo lugar.

Pero imagino que los precios se guardan con un registro algo asi como "Prec1, Prec2" algo asi... pero no se cuales son los registros que hay que modificar... Pense que habria maneras de leer el archivo y saberlo...

Bueno... Gracias de antemano de todos modos por la ayuda que me puedas dar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Diego Romero (996 intervenciones) el 29/10/2007 07:32:59
Pues entonces olvídalo. Si el programador original de la aplicación no te da la definición del registro, hay que hackear, una tarea que lleva mucho tiempo y esfuerzo.

El problema es el siguiente, Pascal genera archivos binarios, es decir una rastra de bytes. La definición del registro indica cómo debe interpretarse esa rastra de bytes, o sea algo así: los dos primeros bytes son el primer campo y debe interpretarse como un Word, los cuatro siguientes como un Real, los 30 posteriores como un String, etc... supuestamente cuando termina un registro comienza el otro volviendo interpretarse todo de nuevo. Como te darás cuenta para hackear esto solo se puede hacer por "prueba y error" o "fuerza bruta" y las combinaciones son innumerables.

Pero ese no es todo el problema, es posible que el archivo en cuestión tenga una cabecera que a su vez tiene su propia definición de registro, lo que complica aún más el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Ayuda Archivo.Dat

Publicado por Mechanic (177 intervenciones) el 31/10/2007 23:12:49
A ver Miguel! A mi me cuesta un poco entender.
Lo que yo veo es que deberías crear tú el archivo binario e ingresarle los números decimales y luego hacer que este los lea, modifique y los vuelva a escribir remplazando los datos anteriores.

Me tomé más o menos una hora de tiempo para resorver este problema por dos razones: 1. El interés de ayudar a que aprendas Pascal y 2. Me sirve para recordar lo que se me había olvidado.

Bien, te hice 2 programas. Uno que crea el archivo binario.dat y le ingresa los 6 números.
Y el otro lo abre y lo lee.
Con esto solo te queda hacer una operación que divida los números entre mil y ya sabrás hacer como escribirlos de nuevo en el archivo

Espero que de algo te sirva. Saludos !


{Vamos a crear un archivo binario con 6 numeros que pueden ser decimales}
Uses Crt;
var archivo: file of real; {Variable de archivo binario}
A,B,C,D,E,F : Real; {variables que aceptan decimales}

begin
{Le vamos a dar un valor a cada variable}
A := 45; B := 46; C := 47; D := 48; E := 49; F := 50;

{Asignaremos la variable archivo al archvo binario.dat}
assign(Archivo,'BINARIO.DAT');

{Abre el archivo y lo prepara para escritura}
rewrite(Archivo);

{Ahora vamos a escribir en el archivo 6 numeros}

seek(Archivo,1); {mueve la posicion del archivo a otro componente}
Write(Archivo,A);
seek(Archivo,2);
Write(Archivo,B); {Escribe en el archivo el valor de la variable B}
seek(Archivo,3);
Write(Archivo,C);
seek(Archivo,4);
Write(Archivo,D);
seek(Archivo,5);
Write(Archivo,E);
seek(Archivo,6);
Write(Archivo,F);
Close(Archivo);

Writeln('Archivo creado.. Presione una tecla');
Repeat until KeyPressed
end.


{Vamos a abrir y a leer el archivo creado}

Uses Crt;
var archivo: file of real; {Variable de archivo binario}
A,B,C,D,E,F : Real; {variables que aceptan decimales}

begin
ClrScr; {Limpia la pantalla}

{Asignaremos la variable archivo al archivo binario.dat}
assign(Archivo,'BINARIO.DAT');

Reset(Archivo); {Abre el archivo y lo prepara para lectura, no escritura}

seek(Archivo,1); {mueve la posicion del archivo a otro componente}
Read(Archivo,A); {Lee del archivo y almacena en la variable A}
seek(Archivo,2);
Read(Archivo,B);
seek(Archivo,3);
Read(Archivo,C);
seek(Archivo,4);
Read(Archivo,D);
seek(Archivo,5);
Read(Archivo,E);
seek(Archivo,6);
Read(Archivo,F);

{Ahora vamos a escribir en pantalla el valor de la variable A

Cuando es necesario delplegar el valor almacenado en una variable
del tipo real, este valor ser  escrito en notaci¢n exponecial a menos
que se incluyan especificadores de formato.

Por eso, el 4 indica el ancho de caracteres donde ser  impreso
el n£mero. El 2 indica que ser  redondeado a 2 decimales}

Writeln(A:4:2);
Writeln(B:4:2);
Writeln(C:4:2);
Writeln(D:4:2);
Writeln(E:4:2);
Writeln(F:4:2);

Repeat Until KeyPressed;

Close(Archivo); {No dejes abierto el archivo}
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por preludio (17 intervenciones) el 01/11/2007 03:17:14
buenas...

hace falta todos esos seek(archivo,var) despues de cada write y read??, tengo entendido q por cada vez q se lee o se escribe en el archivo (read , write ) el puntero avanza a la proximo registro del archivo.

PD: el primer registro del archivo tiene posicion 0 (cero).
readkey es una buena opcion a la hora de dejar un mensaje en pantalla x un largo tiempo. (hasta q se presione una tecla, jeje)..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Mariano (57 intervenciones) el 01/11/2007 03:56:44
Hola! Los seeks no son necesarios, automaitcamente, luego de leer un dato, va a la siguiente linea.

Un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Ayuda Archivo.Dat

Publicado por Mechanic (177 intervenciones) el 01/11/2007 04:53:03
Veo que han encontrado código innecesario en el Programa. jeje
La verdad es que no tengo nada que decir..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Luis Matheus - +584127502226 (7 intervenciones) el 02/11/2007 13:17:35
Const
NPVP = 3;
NCOS = 3;
KC = 15; { Producto }
KN = 40;
KM = 10; { Multiple }
KR = 15;
NMes = 13;
EstI = 12;
MaxF = 40; { Maximo de campos }
Type
RegCampos = Record
Name: String[15];
TipoF: Char;
Len,
Max,
Dec,
Need,
MaskI: Byte;
InitB: Word;
Activo,
InfoOn: Boolean;
Nivel: Byte;
Dummy: Array[1..2] Of Byte;
End;

RegArchivo = Array[1..MaxF] Of RegCampos;
RegConfArchivo = Record
SizeRec,
NroField: Word;
MaxTl: Byte;
Field: RegArchivo;
End;
Real48 = Real;
SmallInt = Integer;
ArrayPrecio = Array[1..NPVP] Of Real48;
ArrayCosto = Array[1..NCOS] Of Real48;
{*-----------------------------------------------------------------*}
RegSplProducto = Record
(***)Case Byte Of
(***)0: ( Conf: RegConfArchivo);
(***)1: ( Codigo: String[KC];
Departa: String[KM];
Descripcion: Array[1..3] Of String[KN];
Refere: String[KR];
Marca: String[20];
Unidad: String[3];
TipoP: Char;
UsoI,
Serial,
ComiDept,
Compuesto: Boolean;
IVAP: Real48;
DiasE: SmallInt;
Exento: Boolean;
NeedBalanza: Boolean;
UsaEmp: Boolean;
EsPorcent: Boolean;
ImpuestoI,
CantPedida,
CantCompro: Real48;
CostoPrd: ArrayCosto;
PVP: ArrayPrecio;
FechaUC,
FechaUV: String[8];
ExistMi,
ExistMa,
Existencia: Real48;
Estadistics: Array[1..NMes,1..EstI] Of Real48;
Empaque,
ExUnidades,
CostoUnidad,
PrecioUnidad: Real48;
OUnidad: String[3];
FlagContab: Boolean;
CtasContab: Array[1..6] Of String[25];
TieneOferta,
TieneTalla,
TieneColor,
TieneLote: Boolean;
Dummy2: Array[1..72] Of Byte;
);
End;

RegProducto = Record
Status: LongInt;
Special: RegSplProducto;
DataArea: Array[1..1] Of Byte;
End;

amigos esa es la estructura de la que habla el amigo miguel es de un programa q se llama saint administrativo esa es la estructura pero se me presentan dos casos no se si ven arriba marcado con(***) dentro de la defincion de la estructura tiene un case no logro entender q significa si me pudieran ayudar a resolver ese enigma ya tendria lista la rutina...
si alguien me puede contactar por via msn: [email protected]...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Diego Romero (996 intervenciones) el 05/11/2007 14:51:29
Lo que has marcado con (***) es un registro variante (perfectamente válido).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por preludio (17 intervenciones) el 13/11/2007 17:17:08
es un registro q puede tener registros diferentes, es decir, ese case selecciona el tipo de variable q tendras dentro del registro dependiendo de la variable.
el case evalua la variable y si es 0 tiene tal variable y si es 1 tiene otra variable distinta + las otras varialbes q tan fuera del case.

espero haberme explicado bien, jeje..

suerte compañero !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Luis Matheus (7 intervenciones) el 17/11/2007 15:57:37
perfecto eso lo entiendo pero la unica parte fija q tiene no hay ninguna variable sino solo un tipo de dato como haria para leer datos de ese archivo...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Luis  (1 intervención) el 14/12/2007 19:55:19
Matheus en base a tu definicion de registro y si conoces el siguiente caso:

Donde agrega SAINT los registros nuevos: al FINAL de dicha estructura?, como seria la nueva definicion si yo supuestamente agrego dos campos: uno tipo numerico de longitud 3 y 0 decimales y el otro de tipo caracter de 20 letras?.

Saludos y gracia de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Jennifer (1 intervención) el 01/04/2009 03:12:52
Buenas noches! Soy estudiante de cuarto año, administracion mencion precesamiento de datos. Por lo que me estan dando diversos programas como lenguaje C, pascal, y visual basic. Quisiera un poco de ayuda respecto a que tengo que diseñar un programa en lenguaje C alusivo a un programa de mensajeria de texto, sin archivos, solo con registros y arreglos de registros.. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Nelsy  (2 intervenciones) el 16/07/2010 02:22:42
buenas noches yo tengo el mismo problema necesito una ayuda urgente estoy en el 2do semestre de ingenieria informatica y necesito hacer un programa para mi Mini Proyecto que dice asi
IUTMAKRO cadena de supermercados de alimentación requiere un sistema para su control de
ventas, para ello almacena los datos de los productos, en el siguiente registro:
Productos: código del producto (numero único de un producto), producto (nombre del
producto), marca (nombre del fabricante), precio (del producto) y unidades (cantidad
existente en inventario).
Y los datos de las ventas mensuales, en el registro Ventas, que posee los siguientes campos:
código del producto, fecha, cantidad vendida.
Se requiere:
(a) Definir los arreglos de registros necesarios para almacenar los productos y las ventas.
(b) Realizar las siguientes operaciones:
• Ingresos: Consiste en introducir nuevos productos con todos sus datos. Normalmente
se efectuarán varios ingresos consecutivos.
• Eliminaciones: Se introduce el código del producto a eliminar, se muestran sus datos y
se pide al usuario confirmación de la baja.
• Modificaciones: Se introduce el código del producto, se muestran los valores anteriores
y nuevos a modificar solicitando confirmación.
• Consultas: Pueden ser de tres tipos:
1) por producto, pidiendo el código del producto y mostrando todos sus datos;
2) total, mostrando el listado de todos los productos con sus datos (la lista de
productos debe estar ordenada en forma creciente por código de producto);
3) De ventas: Se debe mostrar el costo total por producto, diariamente. La salida se
realiza por pantalla.
• Ventas: Se introduce el código del producto a vender y se solicita cuantas unidades del
producto se desea vender, afectando en consecuencia el inventario del producto.
(c) Escribir un programa en Pascal comandado por un menú con las operaciones del apartado
anterior, usando funciones y procedimientos.
La entrega final consiste en:
1) Informe con Solución Modular y Escenarios de pruebas (Juegos de ensayo y pantallas con
los resultados).
2) Manual de usuario.
3) Un CD con el código fuente completamente documentado.
Nota: Los equipos deben estar conformados por un máximo de tres (03) personas. por fa el que pueda hacerlo se lo agradecere mucho porque yo lo estoy intentando hacer pero nunca e trabajado con dev- pascal ni nada q se le parezca y es en ese programa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Archivo.Dat

Publicado por Nelsy  (2 intervenciones) el 16/07/2010 02:42:54
buenas noches yo tengo el mismo problema necesito una ayuda urgente estoy en el 2do semestre de ingenieria informatica y necesito hacer un programa para mi Mini Proyecto que dice asi
IUTMAKRO cadena de supermercados de alimentación requiere un sistema para su control de
ventas, para ello almacena los datos de los productos, en el siguiente registro:
Productos: código del producto (numero único de un producto), producto (nombre del
producto), marca (nombre del fabricante), precio (del producto) y unidades (cantidad
existente en inventario).
Y los datos de las ventas mensuales, en el registro Ventas, que posee los siguientes campos:
código del producto, fecha, cantidad vendida.
Se requiere:
(a) Definir los arreglos de registros necesarios para almacenar los productos y las ventas.
(b) Realizar las siguientes operaciones:
• Ingresos: Consiste en introducir nuevos productos con todos sus datos. Normalmente
se efectuarán varios ingresos consecutivos.
• Eliminaciones: Se introduce el código del producto a eliminar, se muestran sus datos y
se pide al usuario confirmación de la baja.
• Modificaciones: Se introduce el código del producto, se muestran los valores anteriores
y nuevos a modificar solicitando confirmación.
• Consultas: Pueden ser de tres tipos:
1) por producto, pidiendo el código del producto y mostrando todos sus datos;
2) total, mostrando el listado de todos los productos con sus datos (la lista de
productos debe estar ordenada en forma creciente por código de producto);
3) De ventas: Se debe mostrar el costo total por producto, diariamente. La salida se
realiza por pantalla.
• Ventas: Se introduce el código del producto a vender y se solicita cuantas unidades del
producto se desea vender, afectando en consecuencia el inventario del producto.
(c) Escribir un programa en Pascal comandado por un menú con las operaciones del apartado
anterior, usando funciones y procedimientos.
La entrega final consiste en:
1) Informe con Solución Modular y Escenarios de pruebas (Juegos de ensayo y pantallas con
los resultados).
2) Manual de usuario.
3) Un CD con el código fuente completamente documentado.
Nota: Los equipos deben estar conformados por un máximo de tres (03) personas. por fa el que pueda hacerlo se lo agradecere mucho porque yo lo estoy intentando hacer pero nunca e trabajado con dev- pascal ni nada q se le parezca y es en ese programa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar