метод.
я есть почти готовое приложение, и следующая функция, которую я хочу реализовать, - это многопоточность. Я решил использовать BeginThread (), хотя знаю о TThread в Delphi. Проблема, с которой я сталкиваюсь, заключается в структуре вызова BeginThread (). Обычно строка в программе, которая будет вызывать функцию, к которой я хочу подключиться,
CompareFiles(form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op);
оп является целым числом.
Строка, для которой я отключил эту ветку:
BeginThread(nil,0,CompareFiles,Addr('form1.Edit3.Text,Form1.Edit4.Text,Form1.StringGrid2,op'),0,x);
Из небольшого количества информации, которую я могу найти о том, как на самом деле использовать BeginThread (), это должно быть хорошим вызовом, однако при компиляции все, что я получаю, это ошибки компилятора относительно структуры моих параметров оператора BeginThread ().
РЕДАКТИРОВАТЬ ДЛЯ ИНФОРМАЦИИ.
Текущая процедура, которая вызывает 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;
Если бы я использовал TThread, как это было предложено несколькими людьми, и как это показано Робом ниже, я бы запутался в том, как а) я передал бы op, Edit3 / 4.Text и StringGrid2 в CompareFiles. Исходя из примера TThread, который я видел, я решил заменить приведенный выше код наTCompareFilesThread.Execute
и положить текущий код из Panel29Нажмите вTCompareFilesThread.Create
а затем добавить
FEdit3Text := Edit3Text;
FEdit4Text := Edit4Text;
FGrid := Grid;
к этому
FEdit3Text := Form1.Edit3.Text;
FEdit4Text := Form1.Edit4.Text;
FGrid := Form1.StringGrid2;
Но у меня есть это ноющее чувство, которое совершенно не в порядке.