PDA

Ver la Versión Completa : StringList.LoadFromFile Access Violation


jhonalone
08-08-2018, 22:14:46
Hola compañeros.

Estoy teniendo un problema al leer un fichero de texto guardado con un TStringList.

El problema de "Access violation" ocurre cuando intento releer el fichero por segunda y sucesivas veces. Pero la primera vez lo lee correctamente.


var
ListTermi: TStringList;
DataFile : String;

......

TForm1.FormCreate
ListTermi := TStringList.Create();

....

TForm1.FormShow

DataFile := TPath.Combine(DirSdCard, 'Plan.txt');

with ListTermi do
try
Clear;
LoadFromFile(DataFile);
finally
// Free; No se utiliza, porque quiero que quede en memoria para varios usos.
end; // try


No entiendo por qué la primera vez que lo leo no me da ERROR y si salgo de la unit y vuelvo a entrar me da access violation.

Tenía entendido que me debería sobrar hasta la función "Clear" ya que según la documentación de Embarcadero al llamar a LoadFromFile() , esta función llama a "Clear" antes de leerlo. He probado quitando "Clear" y da el mismo error.

Siento molestaros en vacaciones.
Saludos y gracias de antemano.

jhonalone
09-08-2018, 01:02:16
Hola, de nuevo.
¡Problema resuelto!

Cosas de mi mala cabeza. Al salir de la unit, había colocado un "ListTermi.Free" para liberar la memoria al salir y no me acordaba. En principio había pensado hacer las cosas de otra forma y luego cambié de opinión.

Mi disculpas.
Saludos a todos.