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 04-05-2003
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 21
Tonio Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 04-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 04-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 04-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Me uno a lo dicho por el amigo Kinobi. Creo que deberías de utilizar Base de datos, aunque fuera Paradox.

Un Saludo.
Responder Con Cita
  #5  
Antiguo 04-05-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 23
kinobi Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 07-05-2003
Tonio Tonio is offline
Miembro
 
Registrado: may 2003
Ubicación: Logroño
Posts: 111
Poder: 21
Tonio Va por buen camino
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.
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
copiar texto sin formato en un TRichEdit!!!! aranel OOP 1 20-12-2005 19:24:17
cargar ficheros de texto y mostrar el contenido kakesoft Varios 8 08-08-2005 18:43:03
Cual es la Forma Correcta de Guardar Texto en un IbDataset con TcpServer???? AGAG4 Varios 0 10-12-2004 22:14:41
Db y archivo de texto carlospcs MySQL 0 10-08-2004 23:51:14
como justifico un texto en QrdbRichText de Qreport nvalerio Varios 5 30-04-2004 21:12:30


La franja horaria es GMT +2. Ahora son las 21:33:22.


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