我的代码中好多处用到编辑框清空,我想通过dll文件中过程参数传递解决。dll文件中过程代码如下
procedure empty(s1,s2,s3,s4:string);stdcall
begin
s1:='';
s2:='';
s3:='';
s4:=''; end;
外面是这样的
empty (edit1.text,edit2.text,edit3.text,edit4.text);但怎么就传不进去。请高手指教一下。
procedure empty(s1,s2,s3,s4:string);stdcall
begin
s1:='';
s2:='';
s3:='';
s4:=''; end;
外面是这样的
empty (edit1.text,edit2.text,edit3.text,edit4.text);但怎么就传不进去。请高手指教一下。
begin
A.Text := '';
B.Text := '';
C.Text := '';
D.Text := '';
end;procedure TForm1.Button1Click(Sender: TObject);
begin
empty(Edit1, Edit2, Edit3, Edit4);
end;
procedure Empty(A: array of TEdit); stdcall;
var
i : Integer;
begin
for i := Low(A) to High(A) do
A[i].Text := '';
end;procedure TForm1.Button1Click(Sender: TObject);
begin
empty([Edit1, Edit2, Edit3, Edit4]); //TEdit组件实例数量可不固定为4个了
end;
begin
A.Text := '';
end;procedure TForm1.Button1Click(Sender: TObject);
begin
empty(Edit1);
empty(Edit2);
end;
procedure Empty(A, B, C, D: TEdit;E:TMemo); stdcall;
begin
A.Text := '';
B.Text := '';
C.Text := '';
D.Text := '';
E.Text:='';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
empty(Edit1, Edit2,Edit3 , ,memo1);
end;请问这有什么问题吗?
if ....
empty(Edit1, Edit2,Edit3 , nil, memo1);或者在函数定义时,参数直接定义为指针类型.
调用有问题
procedure Empty(A: array of TCustomEdit); stdcall;
var
i : Integer;
begin
for i := Low(A) to High(A) do
A[i].Text := '';
end;调用:
empty([Edit1, Edit2,Edit3,memo1]);
begin
if A<>nil then A.Text := '';
if B<>nil then B.Text := '';
if C<>nil then C.Text := '';
if D<>nil then D.Text := '';
if E<>nil then E.Text := '';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
empty(Edit1, Edit2,Edit3 ,NIL ,memo1);
end;
还有调用的方式,我不赞成什么API的调用方法,DELPHI是面向对象的,应该多利用他面向对象的特性.照我的方法,以后要初始化N个TCustomEdit的子类都可以不用更改函数的参数声明,只要
empty([edit1,edit2......edit n,memo1,memo2.....memo n]);就可以了!