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.Execute
e 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.