请教关于DLL中的简单问题?请看看。 不能传递string类型的参数,除非使用一个什么单元,才可以传递。用Pchar类型,并请详细告知出错的信息。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改成这样试试:procedure createbutton(t:tform;b:tbutton;bcaption:string);var btn:Tbutton;begin btn:=tbutton.create(t); btn.parent:=t; btn.caption:=bcaption; b:=btn;end; 不能传递string类型的参数,除非使用一个什么单元,才可以传递。用Pchar类型,并请详细告知出错的信息。 如果dll的导出函数有string类型的参数dll和调用dll的程序(如果delphi编写的)必须要 Uses Sharemen 单元看看 delphi的帮助 请问:那么,在源程序中如何使用procedure createbutton(t:tform;b:tbutton;bcaption:string)也就是如何调用?谢谢! createbutton name 'cbutton'; jrjcz () ,你的代码有两处错误:********************************第一: uses SysUtils, Classes, Forms, StdCtrls;第二: createbutton name 'cbutton';************************************欢呼吧!!! 請改成这样试试:library cbutton;uses SysUtils, Classes;{$R *.res}procedure createbutton(t:tform;b:tbutton;bcaption:string);exportbegin b:=tbutton.create(t); b.parent:=t; b.caption:=bcaption;end;exportscreatebutton name 'cbutton';beginend. var form1: tform; button1: tbutton;begin form1 := tform.create(application); createbutton(form1, button1, 'you are right');end;这样做不是很好,因为到时侯不知如何释放button,还有要加sharemem.pas 这个单元在动态库里。 声明procedure cbutton(t:tform;b:tbutton;bcaption:string);external 'cbutton.dll';后,使用cbutton(form1;b;'a')时会出错,不知何故? 更正:cbutton(form1,b,'a') 报错信息希望能具体一点。Library ...Uses ShareMem,...ProgramUses ShareMem,.... 以前我也遇到过类似的情况, 但不知道你代码具体是怎么写的。给多点信息吧~! unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure cbutton(t:tform;b:tbutton;bcaption:string);external 'cbutton.dll' name 'cbutton';procedure TForm1.Button1Click(Sender: TObject);varx:tbutton;begin cbutton(form1,x,'adsfg');end;end.运行时出错,不知何故? 方法一:采用Build with Run packages方法二:传入参数TApplication 楼上各位说的好像太复杂了!我认为写DLL 应该有几个原则:1.尽量用windows的标准类型来传递参数2.尽量不要用string传递字符串变量3.尽量用 stdcall 方式...(等等)如果楼主写都是delphi的程序,为何要用DLL呢?:) 上面的程序运行中,b:tbutton 没有创建,不知何故? 帮忙看一下这两个帖子好吗?http://www.csdn.net/expert/topic/854/854793.xml?temp=.969784http://www.csdn.net/expert/topic/854/854793.xml?temp=.9821131 如何控制excel生成数据透视表 字符串 数组 怎么存入文件! 关于COM口的数据通信的问题,各位高手请帮帮忙! DELPHI和哪个数据库连接的更好,更稳定一些!!!! 来者有分:我想写一个以IE为内核的浏览器,想从注册表中将用户的收藏夹资料导出来…… 报表中的中文显示问题? 高手请进(关于api的问题) ADO连接数据库问题 如何在D5中建立SQL7。0的临时表,ADO+MSSQL7!!急!!!!!!!!!!!!!!! 送份!送分!请问收取邮件后如何不重新连接就可以得到新的邮件头 在access中怎么判断一个一个字段的值是不是空? 升级成四个角,我也给大家分!
procedure createbutton(t:tform;b:tbutton;bcaption:string);
var
btn:Tbutton;
begin
btn:=tbutton.create(t);
btn.parent:=t;
btn.caption:=bcaption;
b:=btn;
end;
dll和调用dll的程序(如果delphi编写的)
必须要 Uses Sharemen 单元
看看 delphi的帮助
那么,在源程序中如何使用
procedure createbutton(t:tform;b:tbutton;bcaption:string)
也就是如何调用?
谢谢!
********************************
第一:
uses
SysUtils,
Classes,
Forms,
StdCtrls;
第二:
createbutton name 'cbutton';
************************************欢呼吧!!!
library cbutton;
uses
SysUtils,
Classes;
{$R *.res}procedure createbutton(t:tform;b:tbutton;bcaption:string);export
begin
b:=tbutton.create(t);
b.parent:=t;
b.caption:=bcaption;
end;exportscreatebutton name 'cbutton';begin
end.
form1: tform;
button1: tbutton;
begin
form1 := tform.create(application);
createbutton(form1, button1, 'you are right');
end;
这样做不是很好,因为到时侯不知如何释放button,
还有要加sharemem.pas 这个单元在动态库里。
后,使用cbutton(form1;b;'a')时会出错,不知何故?
cbutton(form1,b,'a')
Library ...
Uses ShareMem,...Program
Uses ShareMem,....
以前我也遇到过类似的情况, 但不知道你代码具体是怎么写的。给多点信息吧~!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure cbutton(t:tform;b:tbutton;bcaption:string);external 'cbutton.dll' name 'cbutton';
procedure TForm1.Button1Click(Sender: TObject);
var
x:tbutton;
begin
cbutton(form1,x,'adsfg');
end;end.
运行时出错,不知何故?
方法二:传入参数TApplication
我认为写DLL 应该有几个原则:
1.尽量用windows的标准类型来传递参数
2.尽量不要用string传递字符串变量
3.尽量用 stdcall 方式
...(等等)
如果楼主写都是delphi的程序,为何要用DLL呢?:)
http://www.csdn.net/expert/topic/854/854793.xml?temp=.969784
http://www.csdn.net/expert/topic/854/854793.xml?temp=.9821131