Ver Mensaje Individual
  #4  
Antiguo 26-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
ascrnet en delphi el tipo string no esta limitado (bueno hasta 2 GBytes ). El problema no es el tipo de la variable, sino que si luego quieres usar el record para definir el tipo de un fichero, el record tiene que tener una longitud fija, por eso se utilizan strings con una longitud fija. Este tipo de strings si que tienen una limitación de 255 caracteres

Una solución puede ser usar arrays de caracteres. Pensemos en un tamaño lo bastante grande, 32 kb por ejemplo, y lo usaremos de la siguiente manera:
Código Delphi [-]
type
  Registro = record
    Str: Array[0..32*1024] of Char;
  end;

var
  F: File of Registro;
  Str: String;
  R: Registro;
begin
  AssignFile(F,'C:\Prueba.bin');
  {$I-}
    Rewrite(F);
  {$I+}
  if IOResult = 0 then
  begin
    Str:= 'Una cadena muy larga .........';
    // Borramos todo el contenido del regsitro
    FillChar(R,Sizeof(R),0);
    // Copiamos el string en el array de caracteres hasta el tamaño maximo
    StrLCopy(R.Str,PChar(Str),Sizeof(R.Str)-1);
    Write(F,R);
    CloseFile(F);
  end;
end;
Como puedes ver, no es un sistema muy eficiente de guardar la información. Cada registro mediara 32kb, aunque solo contenga una letra. Quizá cuando tengas mas practica te interese usar otros métodos de almacenar información: bases de datos, xml, ini, ... que seguramente se mostraran mas eficientes para guardar cadenas.
Responder Con Cita