Синхронизация (изменение значений) Edit используя Dll
Как передать (изменить) данные в Edit (любой текст или сумму или отнять) используя .dll. Получаю ошибку при компиляции set.dll в виде: [dcc32 Error] Project1.dpr(8): E2003 Undeclared identifier: 'Edit1'
Проект set.dll:
library Project1;
uses
System.SysUtils, System.Classes, Vcl.Dialogs;
procedure EditPROC; export;
begin
Edit1.Text:='OK';
end;
exports EditPROC;
{$R *.res}
begin
end.
А вот код самой программы VCL:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// подключаем set.dll
procedure EditPROC; external 'set.dll';
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
// Запускаем set.dll и передаем данные из EditPROC в программу
EditPROC;
end;
end.
Где допускаю ошибку ?
Ответы (1 шт):
Автор решения: Gleb
→ Ссылка
В общем вделал так:
Это код в DLL:
library Project1;
uses
System.SysUtils,
System.Classes;
{$R *.res}
Function PlusMin (a,b, Index: Integer): Integer;
begin
if index =0 then
result:= a + b;
if index =1 then
result:= a - b;
end;
exports PlusMin;
end.
А это код самой программы VCL:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
ComboBox1: TComboBox;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function PlusMin (a,b, integer: Integer): Integer;
// Подключаем Dll
External 'dll.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
// Вывод суммы или минуса (Edit1.Text -+ Edit2.Text) = в Edit3 через функцию (PlusMin) из DLL
Edit3.Text:= inttostr(PlusMin (strtoint(Edit1.Text), strtoint(Edit2.Text), Combobox1.ItemIndex));
end;
end.
Вот таким способом нашел решение. Может кому и пригодится вариант. Для начинающих, как я.