Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tema: Ficheros de texto (https://www.clubdelphi.com/foros/showthread.php?t=33)

Tonio 04-05-2003 16:27:07

Tema: Ficheros de texto
 
Ya no puedo buscar, es una pena.
Yo ando liado con ficheros de texto, bastante grandes.
Tengo una empanada con el tema de ficheros binarios, sin tipo, etc.
Yo quiero tener un archivo de texto en el que haya tres campos, el ejemplo típico de la agenda, uno numérico, uno string y otro string pero de muchos caracteres, mas de 130.000.
He copiado un ejemplo de un libro, creo de Charte, de una Agenda, lo compilo y funciona, pero...
Lo declaro así:

type
TRegistro = Record { Definición del registro a utilizar }
Id:integer
Libro: String[25];
Texto: AnsiString;

Pongo texto com ansistring, porque he leído que puede contener cualquier número de caracteres.

compilo y en esta línea Archivo: File Of TRegistro; // Para acceder al archivo

me dice:

[Error] Agenda.pas(34): Type 'TRegistro' needs finalization - not allowed in file type.

¿Qué debo hacer?, ¿Qué hago mal?.
Como hago para que en un fichero pueda poner 280 registros como el anterior, Id, Libro, Texto, que los pueda leer, modificar y guardar nuevamente.
Gracias de antemano.
Tonio.

kinobi 04-05-2003 16:48:08

Re: Tema: Ficheros de texto
 
Hola,

Cita:

Posteado originalmente por Tonio Pongo texto com ansistring, porque he leído que puede contener cualquier número de caracteres.
Puedes poner también String. Por defecto (salvo que lo hayas cambiado tú - directiva {$H-} y {$H+} ) un String es un AnsiString.

Cita:

Posteado originalmente por Tonio [Error] Agenda.pas(34): Type 'TRegistro' needs finalization - not allowed in file type.
Te falta cerrar con "end;" la declaración del registro.

Cita:

Posteado originalmente por Tonio Como hago para que en un fichero pueda poner 280 registros como el anterior, Id, Libro, Texto, que los pueda leer, modificar y guardar nuevamente.
Salvo que sea por puro interés de aprendizaje, lo mejor sería buscar otro tipo de almacenamiento, bases de datos y similares.

Saludos.

__cadetill 04-05-2003 16:51:42

he echo alguna prueba y, este error creo que te lo da porque hay que definir las longitudes (exactas) de cada campo

de echo, si lo declaras como "string" a secas, tambien salta este error.

podrias mirar de solucionarlo de la manera que te propongo a continuacion, a ver que te parece

Código:

type
    LongText = array[1..500] of string[255];

    TRegistro = record
        id    : integer;
        libro : string[25];
        texto : LongText;
end;

var Archivo: file of TRegistro;

o bien utilizando el TStringsList asi

Código:

type
    TRegistro = record
        id    : integer;
        libro : string[25];
        texto : TStrings;
end;

var Archivo: file of TRegistro;

A ver si te sirve alguna de las 2 soluciones

marcoszorrilla 04-05-2003 17:01:01

Me uno a lo dicho por el amigo Kinobi. Creo que deberías de utilizar Base de datos, aunque fuera Paradox.

Un Saludo.

kinobi 04-05-2003 17:03:05

Hola,

Cita:

Posteado originalmente por cadetill
[b]he echo alguna prueba y, este error creo que te lo da porque hay que definir las longitudes (exactas) de cada campo
Tienes razón a medias. El problema está al utilizar AnsiString (por defecto igual a un String). Los "archivos con tipo, o con declaración de registro" (typed files) no permiten las cadenas "grandes" (Ansi y Wide Strings) y deben utilizarse ShortStrings.

Cita:

Posteado originalmente por cadetill de echo, si lo declaras como "string" a secas, tambien salta este error.
Por defecto, un String es un AnsiString, de ahí que salte el error.

Por cierto, no se tenga en cuenta mi mensaje anterior en este hilo, salvo lo referente al consejo sobre bases de datos.

Saludos.

Tonio 07-05-2003 15:56:24

Ficheros de Texto. Gracias.
 
Gracias a todos por las respuestas, creo que me inclinaré por lo de las BD, no obstante haré pruebas.
Gracias nuevamente y un saludo.
Tonio.


La franja horaria es GMT +2. Ahora son las 15:40:57.

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