Buenas.
Llego un poco tarde al hilo y a lo mejor no aporto gran cosa, entre otras razones porque me faltan bastantes datos para hacerme a la idea completa del problema.
Por un lado, has colocado las definiciones de unas clases para hilos que no se de donde salen; Me refiero a estas:
Código Delphi
[-]
private
Thread: TStopStartThread;
WaitThread: TWaitThread;
UntilFlag: TEvent;
...
Buscando por Internet
he llegado a esta página dónde se habla de esas clases, así que supongo que debe ser esa unidad (a estas cosas es a lo que se refieren cuando te hablan de que no somos adivinos,...).
Por otro lado, uno de esos threads, llama al procedimiento
CortarArchivo, que has colocado más arriba.
No se qué hacen esas clases para trabajar con threads, por lo que veo en la página te hacen más fácil trabajar con algunos métodos de los threads, pero aparte de que te simplifiquen el trabajo, debes conocer cómo van los threads, ya que me da la impresión de que no pueden solucionar TODAS las limitaciones de los threads.
¿A qué me refiero con esto?
Antes de nada, debes saber que
la VCL no es "Thread-safe"; Esto quiere decir, de forma simple, que no puedes acceder a elementos de la VCL desde 2 threads distintos de forma indiscriminada, o lo que es lo mismo; No puedes acceder a un elemento de la VCL del programa principal, desde un hilo.
Tu procedimiento
CortarArchivo accede a algunos elementos como
Memo1, opc1, prBar,... que imagino (sigo con la bola de cristal adivinando) que están definidos en el formulario principal. Dado que la VCL no es "thread-safe",
no puedes acceder a esos elementos directamente.
¿Esto quiere decir que no puedes usarlos?
NO.
Para poder acceder a esos elementos, los threads poseen el método
Synchronize. Que lo que hace, es ejecutar un método del thread (que acceda a elementos de la VCL), asegurándose que que ningún hilo más (incluído el principal) accede a ellos durante ese periodo de tiempo.
Por lo tanto, creo que los problemas del hilo, con la información que has colocado, está en el procedimiento
CortarArchivo y en los accesos que haces. No se si en otros haces cosas similares.
Espero haberme explicado medianamente bien.
Un saludo.