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 19-04-2009
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Question String mayor a 255 para record

Buenas gente, necesito guardar en un archivo de registro tres datos, un título un link a un sitio de internet y una descripción que es un código html, pero resulta que la descripción por lo general tiene más de 255 caracteres y ahí es cuando se me complica, hay a alguna forma de extender el tamaño de los String?

mi registro está compuesto de la siguiente forma

Código Delphi [-]
THistorial = record
    Titulo: String[255];
    Link: String[255];
    Descripcion: String[255];
  end;

Saludos
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #2  
Antiguo 19-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No sé si dependerá de alguna directiva de compilación o algo así, pero, yo puedo declarar el tipo tal que así, sin problemas:

Código Delphi [-]
type
  THistorial = record
    Link: String;
    Titulo: String;
    Descripcion: String;
  end;

Creo que Delphi es muy capaz de trabajar con algo así. No sé si algún otro compañero podrá añadir algo al respecto.
Responder Con Cita
  #3  
Antiguo 19-04-2009
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
lo intenté, pero cuando declaro un archivo del tipo registor me devuelve este error

[DCC Error] Principal.pas(165): E2155 Type 'THistorial' needs finalization - not allowed in file type

para declarar uso este código

Código Delphi [-]
var
   Reg: file of THistorial;
begin
//....
end;
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #4  
Antiguo 19-04-2009
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hum... me temía algo así... pero, como no especificaste si era un tipo para usar en un archivo (o no leí bien tu mensaje), por eso dije lo que dije... pero, sí es cierto que me suena alguna limitación en el caso que dices. Lamento no poder darte ninguna solución en este caso: no tengo idea de si sería posible, o tendrías que conformarte con los 255 caracteres (supongo que no...), lo lamento de veras.
Responder Con Cita
  #5  
Antiguo 19-04-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Realmente si es necesario especificar un límite en cada string, de lo contrario cada registro tendría un tamaño diferente, es por ello que depende de la longitud de los strings que contenga. Puedes probar a usar AnsiString en lugar de String:

Código Delphi [-]
THistorial = record
    Titulo: String[255];
    Link: String[255];
    Descripcion: AnsiString[1000];
  end;

Para comprobar lo que digo, prueba a ver el tamaño de las dos estructuras (la que tu mostraste, y la de Dec) con SizeOf() y notarás la diferencia.

Un saludo.
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita
  #6  
Antiguo 19-04-2009
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
Bueno dec gracias igual, he puesto una solución temporlamente para siempre hasta que encuentre algo mejor, pero el registro me ha quedado así

Código Delphi [-]
THistorial = record
    Titulo: String[255];
    Link: String[255];
    D1: String[255];
    D2: String[255];
    D3: String[255];
    D4: String[255];
  end;

y para separarlo lo hago de esta forma

Código Delphi [-]
procedure GuardarHistorial;
var
  Reg: file of THistorial;
  Historial: THistorial;
  LHistroial: TLink;
  i: Integer;
  aux: String;
begin
  AssignFile(Reg,Opciones.AppDir + 'Historial.dat');
  Rewrite(Reg);
  //....
      if Length(aux) > 255 then
      begin
        Historial.D1:= Copy(aux,1,255);
        Delete(aux,1,255);
        if Length(aux) > 255 then
        begin
          Historial.D2:= Copy(aux,1,255);
          Delete(aux,1,255);
          if Length(aux) > 255 then
          begin
            Historial.D3:= Copy(aux,1,255);
            Delete(aux,1,255);
            Historial.D4:= aux;
          end
          else
            Historial.D3:= aux;
        end
        else
          Historial.D2:= aux;
      end
      else
        Historial.D1:= aux;
      Write(Reg,Historial);
//...
  CloseFile(Reg);
end;
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #7  
Antiguo 19-04-2009
Avatar de totote
totote totote is offline
Miembro
 
Registrado: oct 2006
Posts: 150
Poder: 18
totote Va por buen camino
DarkMan, me devuelve este error si lo hago de tu forma

[DCC Error] Principal.pas(294): E2029 ';' expected but '[' found
__________________
¡Oh nooo! no compartas, compartir es pirateria, compartir te llevara a la carcel - Revolution OS
Responder Con Cita
  #8  
Antiguo 19-04-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Poder: 18
DarkMan Va por buen camino
Cita:
Empezado por totote Ver Mensaje
DarkMan, me devuelve este error si lo hago de tu forma

[DCC Error] Principal.pas(294): E2029 ';' expected but '[' found
Vaya, tienes razón. Por lo pronto se me ocurre otra solución más viable:

Código Delphi [-]
THistorial = record
    Titulo: String[255];
    Link: String[255];
    Descripcion: Array [0..1000] of Char;
  end;

Puedes trabajar con Descripcion como si un string se tratara.

Un saludo.
__________________
"La recompensa de una buena acción está en haberla hecho"
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
string de un dbedit a entero para guardar la cadena Nereida Varios 3 06-05-2008 15:59:34
Convertir de double a string para un editbox saldanaluis Varios 2 19-12-2007 01:20:54
¿Donde declaro al TEdit char para String?C++ gandalf_27 C++ Builder 2 31-05-2006 20:00:54
Cast para string lucasarts_18 Varios 9 13-07-2005 22:12:57
¿Qué quieres ser de mayor? kinobi Humor 16 11-07-2003 13:46:30


La franja horaria es GMT +2. Ahora son las 17:58:04.


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