Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2007
Avatar de armadillo
armadillo armadillo is offline
Miembro
 
Registrado: abr 2005
Posts: 35
Poder: 0
armadillo Va por buen camino
Question Manipulacion de Ficheros en Pascal

Hola Foristas!!!
A ver si me pueden dar una mano, necesito si o si y no tengo otra alternativa, que acceder a un archivo/fichero del tipo .DAT, de los que cuando estudiabamos utilizabamos en nuestros primeror programillas de "Agenda".
Uso Delphi 7, el agrabante que tengo con este fichero, es que pertenece a una aplicacion hecha en C, al estructura de este archivo es la siguiente:
Cita:
/*---- LONGITUDES CAMPOS -------------------------------------------------*/
#define DLC_COD 10 // Códigos
#define DLC_CAR 16 // Código artículo
#define DLC_SCA 40 // Subcódigo almacén
#define DLC_COS 20 // Centro de coste
#define DLC_CLA 10 // Clasificaciones
#define DLC_NOM 60 // Nombre
#define DLC_NRE 35 // Nombre reducido
#define DLC_DIR 60 // Dirección
#define DLC_CPO 10 // Cóigo postal
#define DLC_POB 40 // Població
#define DLC_PRV 30 // Provincia
#define DLC_CPA 2 // Cóigo país
#define DLC_PAI 30 // Paí
#define DLC_CIF 14 // CIF
#define DLC_TFN 18 // Teléfono
#define DLC_EMA 50 // E-Mail
#define DLC_IBA 30 // IBAN


/*---- CLIENTES ----------------------------------------------------------*/
typedef struct {
/*---- Datos registro */
MDR dr;
/*---- Datos personales */
char cod[DLC_COD],nom[DLC_NOM];
char dir[DLC_DIR],cpos[DLC_CPO],pob[DLC_POB];
char prov[DLC_PRV],cpais[DLC_CPA],pais[DLC_PAI];
char nomc[DLC_NOM],cif[DLC_CIF];
char tfn[2][DLC_TFN],fax[DLC_TFN],email[DLC_EMA];
/*---- Enlaces */
char rep[DLC_COD],fcli[DLC_COD];
char web[60];
/*---- Clasificaciones */
char cla[2][DLC_CLA];
char nomabr[20];
/*---- Datos cobro */
char forpa[DLC_COD];
char domico[24],dirco[24],iban[DLC_IBA];
short dpm[3],dps[2],dfac[3];
FEC dpv1[3],dpv2[3];
char ajupa;
double riemax;
/*---- Datos retenciones */
char rcta[DLC_COD];
float rpor;
char fRetBas;
/*---- Datos especiales */
char blo,riva,tipexe,afac,aval;
short cfac;
char prcco[10];
/*---- Datos varios */
char obs[2][60],obsdoc[60],libuso[3][40];
/*---- Datos envio */
char diren[5][DLC_DIR];
char cposen[5][DLC_CPO],poben[5][DLC_POB];
char proven[5][DLC_PRV],cpaisen[5][DLC_CPA],paisen[5][DLC_PAI];
char foren[5][20],porpd[5];
char tfne[5][2][DLC_TFN],faxe[5][DLC_TFN];
char emaile[5][DLC_EMA];
/*---- Datos contactos */
char perc[4][60],carc[4][30],tfnc[4][DLC_TFN],emailc[4][DLC_EMA];
/*---- Reserva */
char reserva[26];
} CLI;
Aclaro una cosa el dato MDR es otra estructura declarada anteriormente, con que solo me digan como pasar esto a Delphi me sirve.

Al comienzo del fichero hay 2048 bytes de cabecera reservada en los que actualmente se guarda la versión del fichero y luego vienen los registros uno tras otro con esa estructura.

El problema que tengo no es que no sepa trabajar con ficheros y estructuras de registros en Delphi, el problema lo tengo en que no tengo ni idea de C (Fui un negado toda la vida) :-(
Por eso es que acudo a vosotros, a ver si me pueden traducir esta estructura en registros o sea, traducir el Struct en Record...

Muchas gracias por vuestra ayuda
Responder Con Cita
  #2  
Antiguo 16-02-2007
JF Sebastian JF Sebastian is offline
Miembro
 
Registrado: oct 2006
Posts: 108
Poder: 18
JF Sebastian Va por buen camino
Es muy facil. Tienes que cambiar el typedef struct {...} CLI por record ... end y dentro substituir los char cod[DCL_COD]... por cod: array[1..DCL_COD] of char.
Los #define DCL_COD 10 ... los sustituyes por const DCL_COD=19; ....
short dpm[3] --> dpm: array[1..3] of shortint
char ajupa --> ajupa: char;
double riemax --> riemax: double;
float rport --> rport: single;
char diren[5][DCL_DIR] --> diren: array[1..5,1..DCL_DIR] of char;

etc,

Última edición por JF Sebastian fecha: 16-02-2007 a las 17:26:33.
Responder Con Cita
  #3  
Antiguo 16-02-2007
Avatar de armadillo
armadillo armadillo is offline
Miembro
 
Registrado: abr 2005
Posts: 35
Poder: 0
armadillo Va por buen camino
Sebastian Gracias...
Me has abierto los ojos jejeje, a veces cuando uno no sabe algo, parece que se ha metido en un laberinto sin salida y le parecen las cosas muy dificiles....

Pues nada, nuevamente gracias y una cosa mas que se aprende...
Responder Con Cita
  #4  
Antiguo 16-02-2007
Jose Roman Jose Roman is offline
Miembro
 
Registrado: jul 2006
Ubicación: Colombia
Posts: 361
Poder: 18
Jose Roman Va por buen camino
Question

Sebastian tengo un problema parecido a ver mque me aconsejas, los ficheros que poseo son binario y estan hechos en el viejo lenguaje GWBASIC, donde laboro me han preguntado si puedo transformar esos ficheros a CVS. ¿se pueden leer esos ficheros realizados bajo ese lenguaje y conociendo la longitud de los campos?, si es asi como????
Responder Con Cita
  #5  
Antiguo 16-02-2007
JF Sebastian JF Sebastian is offline
Miembro
 
Registrado: oct 2006
Posts: 108
Poder: 18
JF Sebastian Va por buen camino
Tienes que conocer muy bien la estructura del fichero y la extension de sus campos en bytes para poder aplicar el mismo tipo de variables en delphi. Por lo demas no creo que haya ningun problema a la hora de leer el fichero pues la escritura del fichero es independiente del lenguaje siempre y cuando se empleen los mismos tipos de datos. Otra cosa seria la codificacion de los numeros en coma flotante que si es IEEE no hay problema pero si no habria que descodificarlos al convenio de delphi. De todos modos se puede leer la informacion byte a byte abriendo el fichero como file of byte...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
manual de excepciones de object pascal para free pascal??? Garion OOP 3 27-05-2005 00:42:29
Manipulaciòn de Archivos kolo toure Varios 1 03-11-2004 23:17:25
Herramienta de manipulacion maravert Gráficos 8 28-07-2004 20:45:54
Manipulacion De Datos En Bd hebert ordonez Firebird e Interbase 3 22-05-2004 10:01:44


La franja horaria es GMT +2. Ahora son las 12:28:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi