Estructura BeginThread - Delphi
Ahora tengo una aplicación casi completa y la siguiente característica que quiero implementar es el subproceso. Elegí ir con BeginThread (), aunque estoy al tanto de TThread en delphi. El problema con el que me encuentro es la estructura de la llamada BeginThread (). Normalmente, la línea en el programa que llamaría a la función que quiero que se enhebre es
CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
op es un número entero.
La línea por la que lo cambié para crear un hilo es
BeginThread(nil,0,CompareFiles,Addr('form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op'),0,x);
Por la poca cantidad de información que puedo encontrar sobre cómo usar BeginThread (), esta debería ser una buena decisión, sin embargo, al compilar todo lo que obtengo son errores de compilación con respecto a la estructura de mis parámetros de declaración BeginThread ().
EDITAR PARA INFORMACIÓN.
El procedimiento actual que llama a CompareFiles es
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;
Si tuviera que usar TThread según lo sugerido por un par de personas, y como lo muestra Rob a continuación, estoy confundido sobre cómo a) pasaría op, Edit3 / 4.Text y StringGrid2 a CompareFiles. Adivinando el ejemplo de TThread que he visto, pensé que reemplazaría el código anterior conTCompareFilesThread.Execute
y poner el código actual de Panel29Haga clic enTCompareFilesThread.Create
y luego agregue
FEdit3Text := Edit3Text;
FEdit4Text := Edit4Text;
FGrid := Grid;
a esto
FEdit3Text := Form1.Edit3.Text;
FEdit4Text := Form1.Edit4.Text;
FGrid := Form1.StringGrid2;
Pero tengo esta sensación molesta que está totalmente fuera de lugar.