Estrutura BeginThread - Delphi

Agora, tenho um aplicativo quase completo e o próximo recurso que quero implementar é o threading. Eu escolhi ir com BeginThread (), embora eu esteja ciente do TThread no delphi. O problema que encontro é a estrutura da chamada BeginThread (). Normalmente, a linha no programa que chamaria a função que eu quero que seja encadeada é

CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);

op é um número inteiro.

A linha para a qual eu mudei para criar um thread é

BeginThread(nil,0,CompareFiles,Addr('form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op'),0,x);

Pela pouca quantidade de informações que posso encontrar sobre como realmente usar BeginThread (), essa deve ser uma boa opção, no entanto, ao concluir tudo o que recebo, há erros mais complexos em relação à estrutura dos meus parâmetros de instrução BeginThread ().

EDITAR PARA INFORMAÇÃO.

O procedimento atual que chama CompareFiles é

procedure TForm1.Panel29Click(Sender: TObject);
var
op,x : integer;

begin
    if (Form1.Edit3.Text <> '') AND (Form1.Edit4.Text <> '') then
        begin
          op := 3;
          if RadioButton7.Checked = True then op := 0;
          if RadioButton3.Checked = True then op := 1;
          if RadioButton4.Checked = True then op := 2;
          if RadioButton5.Checked = True then op := 3;
          if RadioButton6.Checked = True then op := 4;
          CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
        end;
end;

Se eu fosse usar o TThread como sugerido por algumas pessoas, e como exibido por Rob abaixo, estou confuso sobre como a) eu passaria op, Edit3 / 4.Text e StringGrid2 para o CompareFiles. Adivinhando a partir do exemplo de TThread que eu vi, pensei em substituir o código acima porTCompareFilesThread.Executee colocar o código atual do Panel29Click emTCompareFilesThread.Create e depois adicione

FEdit3Text := Edit3Text;
FEdit4Text := Edit4Text;
FGrid := Grid;

para isso

FEdit3Text := Form1.Edit3.Text;
FEdit4Text := Form1.Edit4.Text;
FGrid := Form1.StringGrid2;

Mas tenho essa sensação incômoda que é totalmente errada.

questionAnswers(1)

yourAnswerToTheQuestion