Hola buenas, llevo un par de horas liado y dándole vueltas a la cabeza con un problema que me he encontrado a la hora de programar una aplicación para la cual uso un mismo progressbar para visualización del proceso de carga de varios procesos que pillan datos de archivos para insertarlos en la BD.
El caso es que si uso el Application.ProgressMessages para 'actualizar' la aplicación, (para hacer el trabajo del Repaint) me da error en "p_cargar_datos1", algo así como que se ha generado un error en la direccion de memoria 0043F6EC y en la 0000014C. Y bueno, aunque lo he solucionado sustituyendo Application.ProgressMessages por Form.Repaint, sigo sin entender por qué me da ése error al usar la otra función/método, así que por eso dejo este post aqui, a ver si alguien entendido me puede decir algo jejeje. Un saludo!.
Código:
// proceso de carga de datos 1
procedure p_cargar_datos1(sRuta:string);
var
fFichero: TextFile;
sCadena:string;
begin
progreso.Position:=0;
progreso.Min:=0;
progreso.Max:=f_CuantosRegistros(sRuta,const_longitud);
try
AssignFile(fFichero,sRuta);
Reset(fFichero);
except
close;
exit;
end;
// Recorremos el fichero
label1.Caption:='Cargando datos...';
while not eof(fFichero) do
begin
Readln(fFichero, sCadena);
progreso.StepIt;
//F_CARGA_RECETAS.Repaint;
application.ProcessMessages;
// cargamos los datos en la BD
// . . .
end;
closeFile(fFichero);
//deleteFile(pchar(sRuta));
self.close;
end;
end;
// proceso de carga de datos 2
procedure p_cargar_datos2(sRuta:string);
var
fFichero: TextFile;
sCadena:string;
begin
progreso.Position:=0;
progreso.Min:=0;
progreso.Max:=f_CuantosRegistros(sRuta,const_longitud);
try
AssignFile(fFichero,sRuta);
Reset(fFichero);
except
close;
exit;
end;
// Recorremos el fichero
label1.Caption:='Cargando datos...';
while not eof(fFichero) do
begin
Readln(fFichero, sCadena);
progreso.StepIt;
//F_CARGA_RECETAS.Repaint;
application.ProcessMessages;
// cargamos los datos en la BD
// . . .
end;
closeFile(fFichero);
//deleteFile(pchar(sRuta));
self.close;
end;
end;