Pues bueno, esperamos entonces la corrección de la indentación. No creo que sea necesario poner tooooodo el código, basta la del botón que abre el archivo.
Pero regresando al punto original, creo que para entenderlo conviene que te olvides por un momento del código y te centres en la lógica del asunto.
Si no mal entiendo, tienes un botón para abrir un archivo y procesar dicho archivo. La lógica lo que dice es que, si no abres el archivo, entonces no haces nada. Por eso, en pseudo código:
Código:
IF AbreArchivo THEN
BEGIN
ProcesoArchivo
END
En ProcesoArchivo va todo lo que debes hacer cuando abres el archivo, incluída la construcción del StringList.
Lo que ahora tienes (otra vez en pseudo código) es
Código:
AbreArchivo
IF ExisteElArchivo THEN
BEGIN
ProcesaArchivo
END
Es decir, realmente (aunque tienes un if por delante) no estás tomando o no una acción dependiendo del resultado de Execute, sino que indistintamente seguías con el proceso. Lo solventaste con el FileExists, pero no había que llegar a eso, porque la cuestión es:
Si no abres el archivo entoncs no haces nada.
// Saludos