Strings largos en archivos
Publicado por M@rceloL (213 intervenciones) el 01/02/2006 00:59:40
A ver, a ver...
Hace años tengo una duda que nunca traté de disipar porque pensé que algún día me iba a poner con el tema e iba a poder resolverlo. Pero ayer estaba aburrido y me puse con el asunto... ¡Y no me salió!
La cuestión es ésta:
Si uno tiene un archivo de registros con un campo string y algunos otros que no, uno hace algo parecido a esto:
type recDatos=record
AlgunDato:integer;
LaCadena:string[50];
end;
var Archivo:file of recDatos;
...bla, bla...
Pero, ¿Qué pasa si <<LaCadena>> tiene que tener más de 255 caracteres? Ajá, estamos sonados ¿O no?
Claro que uno puede hacer algo así:
type recDatos=record
AlgunDato:integer;
LaCadena:array[1..3000] of char;
LongCadena:word;
end;
Pero claro, después para poder crear una verdadera cadena y trabajar con ella uno se ve obligado a leer del archivo y convertir ese arreglo a un AnsiString. Algo así:
var RegLeido:recDatos;
CadenaLeida:shortstring;
[...]
for Ind:=1 to RegLeido.LongCadena do CadenaFinal:=CadenaFinal + RegLeido.LaCadena[Ind];
Lo cual no es muy eficiente que digamos.
¿Sabe alguien alguna manera de declarar y/o leer strings de más de 255 caracteres "directamente" desde el archivo?
En fin, gracias por el tiempo gente.
Hace años tengo una duda que nunca traté de disipar porque pensé que algún día me iba a poner con el tema e iba a poder resolverlo. Pero ayer estaba aburrido y me puse con el asunto... ¡Y no me salió!
La cuestión es ésta:
Si uno tiene un archivo de registros con un campo string y algunos otros que no, uno hace algo parecido a esto:
type recDatos=record
AlgunDato:integer;
LaCadena:string[50];
end;
var Archivo:file of recDatos;
...bla, bla...
Pero, ¿Qué pasa si <<LaCadena>> tiene que tener más de 255 caracteres? Ajá, estamos sonados ¿O no?
Claro que uno puede hacer algo así:
type recDatos=record
AlgunDato:integer;
LaCadena:array[1..3000] of char;
LongCadena:word;
end;
Pero claro, después para poder crear una verdadera cadena y trabajar con ella uno se ve obligado a leer del archivo y convertir ese arreglo a un AnsiString. Algo así:
var RegLeido:recDatos;
CadenaLeida:shortstring;
[...]
for Ind:=1 to RegLeido.LongCadena do CadenaFinal:=CadenaFinal + RegLeido.LaCadena[Ind];
Lo cual no es muy eficiente que digamos.
¿Sabe alguien alguna manera de declarar y/o leer strings de más de 255 caracteres "directamente" desde el archivo?
En fin, gracias por el tiempo gente.
Valora esta pregunta


0