Delphi - Strings largos en archivos

 
Vista:

Strings largos en archivos

Publicado por [email protected] (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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Strings largos en archivos

Publicado por BigLuis (713 intervenciones) el 01/02/2006 19:55:08
Te contesto un poco a lo abulto y sin conocimiento real pero ¿ has probado a declarar la variable como WideString?. Echale un vistazo a la ayuda.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Strings largos en archivos

Publicado por [email protected] (213 intervenciones) el 02/02/2006 23:44:52
Pues no, me dice que no es válido, ni con Wide ni con AnsiString... Y en la ayuda no dicen nada...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar