Hola kirkhelek.
Hay varias cosas para rever...
.- No entiendo para que declarás los procedimientos:
p_cargar_datos1 y
p_cargar_datos2.
A primera vista me parecían similares, a la segunda ví que son idénticos. Uno de los dos
es necesariamente redundante.
.- En la línea:
¿ Quien es Self ? De la forma en que están declarados los procedimientos, no parecen tener un objeto asociado.
.- No sé que realiza
f_CuantosRegistros, pero te aseguro hace disonancia con la línea en que declarás:
por que un archivo de texto no está estructurado en registros.
.- Por último, no necesitás utilizar la instrucción Application.ProcessMessages.
Así que sacando las líneas de comentarios, el ejemplo quedaría así:
Código Delphi
[-]
procedure TForm1.CargarDatos(sRuta:string);
var
fFichero: TextFile;
sCadena: string;
begin
with TStringList.Create do
try
LoadFromFile(sRuta);
progreso.Max:= Count;
finally
Free;
end;
progreso.Position:=0;
progreso.Min:=0;
progreso.Step:= 10; try
AssignFile(fFichero,sRuta);
Reset(fFichero);
except
Close;
Exit;
end;
label1.Caption:='Cargando datos...';
while not eof(fFichero) do
begin
Readln(fFichero, sCadena);
progreso.StepIt;
end;
closeFile(fFichero);
Self.close; end;
Ejemplo de llamada:
Código Delphi
[-]
CargarDatos('C:\PRUEBA.TXT');
Nota: TStringList lo uso para obtener el número de líneas de forma sencilla (hay mejores métodos), pero para el ejemplo sirve.
Espero haberte ayudado.
Saludos.