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 07-02-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Unhappy Ayuda con error en codigo :-(

Teniendo este codigo:

Código Delphi [-]
PROGRAM Pract_3a_5_4;      {$APPTYPE CONSOLE}
USES
  SysUtils, crt;
TYPE
  informacion = RECORD
  nombre: STRING[20];
  apellidos: STRING[20];
  NIF: STRING[20];
END;
  agenda = ARRAY [1..5] OF informacion;
  archivo = FILE OF informacion;
VAR
  a: agenda;
  eleccion: STRING;
  contador: integer;
  introducido: boolean;
y este procedimiento:

Código Delphi [-]
PROCEDURE grabarDatos (contador: integer);(* Guarda lo introducido en un fichero: "datos.dat" *)
  VAR
    aux: integer;
    grabado : archivo;
  BEGIN
    assign (grabado, 'Datos.dat');
    rewrite (grabado);
    FOR aux:= 1 TO contador DO
      BEGIN
        write (grabado, a[aux].nombre); (* ERROR *)
        write (grabado, a[aux].apellidos); (* ERROR *)
        write (grabado, a[aux].NIF); (* ERROR*)
        write (grabado);
      END;
    close (grabado);
  END;
Me aparecen tres errores que dicen: "incompatible types": 'informacion' and 'ShortString'. (Donde he puesto lo de (*ERROR*)

Los datos que guardo han sido pedido correctamente en otro procedimiento.

Alguien me puede ayudar a arreglarlo?

muchas gracias



Última edición por jhonny fecha: 07-02-2007 a las 18:19:35.
Responder Con Cita
  #2  
Antiguo 07-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Fácil! Quita las líneas que te dan error

No, ya en serio, quita las líneas que te dan error. Es que así es. Tú estás grabando en un file of informacion, de manera que lo único que acepta el procedimiento write son variables de tipo informacion; así que bastaría con:

Código Delphi [-]
write (grabado, a[aux]);

// Saludos
Responder Con Cita
  #3  
Antiguo 07-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Me tome el atrevimiento de modificar tu mensaje para que veas como se deben usar las etiquetas para código Delphi
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #4  
Antiguo 07-02-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Vale muchisimas gracias, ya va perfectamente. Tambien he quitado las tres lineas y he dejado 1 sola porque asi no se repiten.
Responder Con Cita
  #5  
Antiguo 07-02-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Exclamation

¿y para leer el archivo resultante como se haria? (para meterlo en memoria)

Tengo puesto esto pero me da un error en tiempo de ejecucion.

Código Delphi [-]
 
PROGRAM Pract_3a_5_5;      {$APPTYPE CONSOLE}
USES
  SysUtils, crt;
TYPE
  informacion = RECORD
  nombre: STRING[20];
  apellidos: STRING[20];
  NIF: STRING[20];
END;
  agenda = ARRAY [1..5] OF informacion;
  archivo = FILE OF informacion;
VAR
  a: agenda;
  i: integer;
(******************************************************************************)
PROCEDURE leerDatos;                                                            (* Mete en memoria el contenido del fichero: "Datos.dat" *)
  VAR
    grabado: archivo;
  BEGIN
    assign (grabado, 'Datos.dat');
    reset (grabado);
    FOR i:=1 TO 5 DO
      read (grabado, a[i]);     (* Aqui da el ERROR= "project raised exception class EinOutError with message 'read beyond end of file' *)
    close (grabado);
    writeln ('Datos leeido correctamente del fichero Datos.dat.');
    writeln;
    writeln ('Pulse intro para continuar');
    readln;
  END;
(******************************************************************************)
Responder Con Cita
  #6  
Antiguo 07-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En este caso no se usa LoadFromFile ?
Saludos
Responder Con Cita
  #7  
Antiguo 07-02-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
No me dejan usar eso...

Ya se porque fallaba, yo leia 5 veces y tenia introducido 5 personas, con esto no falla.

gracias una vez mas.

Código Delphi [-]
 
WHILE NOT EOF (grabado) DO
      BEGIN
        read (grabado, a[i]);     (* ERROR= "project raised exception class EinOutError with message 'read beyond end of file' *)
        i:=i+1;
      END;
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
Codigo de Barras.... Ayuda!!!!! adolfoz Varios 14 15-11-2006 17:13:55
ayuda con el codigo de procedimiento almacenado pipecato MS SQL Server 3 13-12-2005 03:41:35
error en el codigo pepelu1975 OOP 10 12-02-2004 13:01:03
Ayuda con -codigo de barras jcglez Varios 2 26-11-2003 23:32:08
Ayuda con código de barras ramiretor Varios 0 28-06-2003 00:42:58


La franja horaria es GMT +2. Ahora son las 03:54:16.


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