哪个可以给个调用外部dll文件的源码,第一次用--学习中

xxxfffcn 2004-05-05 03:19:11
哪个可以给个调用外部dll文件的源码,第一次用
...全文
48 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxxfffcn 2004-05-05
  • 打赏
  • 举报
回复
implementation

{$R *.dfm}

function GetDiskSER():string;stdcall;external 'F:\EIMS\stoff\1\diskser.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetDiskSER());
end;

end.

上面运行进出错
在PB里可调用的
FUNCTION string GetDiskSER() LIBRARY "diskser.dll"
xxxfffcn 2004-05-05
  • 打赏
  • 举报
回复
这个分真的这么重要吗?
bqlhome 2004-05-05
  • 打赏
  • 举报
回复
老大,你也太小气了,问别人问题才给这么一点???
bqlhome 2004-05-05
  • 打赏
  • 举报
回复
这是DLL代码:


library AllPublic;

uses
Messages,
SysUtils,
Forms,
Classes,
Controls,
Dialogs,
Inifiles;

type
AFormInfo=array[0..4] of integer;

{$R *.res}

function GetNextId(Id: string): pchar;stdcall;
//=====Get a next number=================//
//=====Input value : starnumber =======//
//=====return value: Nextnumber =======//
//=====Write by : BaoQiongLin=======//
//=====Date : 2003/12/07 =======//
var
Int_len : Integer;
Int_pos : Integer;
Str_value: String ;
Int_char : Integer;
Next_flag : Boolean;
pos2 : Integer;
begin
Int_pos:=0;
pos2:=0;
Int_len:=Length(Id);
Str_value:=''; //return value
Next_flag:=true;
repeat
Int_char:=Ord(Id[Int_len-Int_pos]);
if Next_flag then
begin
Next_flag:=false;
Int_char:=Int_char+1;
If Int_char<48 then
begin
Int_char:=48;
end
else
begin
if Int_char>57 then
begin
Int_char:=48;
Next_flag:=true;
pos2:=pos2+1;
end;
end;
end;
Str_value:=chr(Int_char)+Str_value;
Int_pos:=Int_pos+1;
Until Int_pos>Int_len-1;
if Pos2=Int_pos then
Str_value:='A' + Str_value;
GetNextId:=Pchar(Str_value);
end;


exports
GetNextId,


begin

end.



下面是调用方法:

function GetNextId(Id: string): pchar;stdcall;
external 'AllPublic.dll';



然后在程序中加入

GetNextID(Str)即可


前言: 是否有易友出现过下列情况: 源码放置大量的资源文件,严重拖慢易文件打开速度。 源码出现损坏,而且源码有大量的资源文件,导致源码极大,修复极度困难,甚至无法修复。 源码附带资源文件多,体积集于一个核心源码文件,非常不轻量化。 如果你有本程序的话,那么你就不用担心以上内容了! 正文: 本程序只是一个宏,不会再你的代码增加任何多余代码,而是将图片/常量等数据和主程序分离,编译时重新打包为一个文件,效果图如下(注:图的“Macro”指令就是核心库的指令:“宏”,这是一个编译前命令):, 工作原理:首先“宏”命令在编译时会引用外部Dll(此处我编写了一个SourcePlugin.dll) 然后,编译器会调用SourcePlugin.dll的“MacroProcessor”接口,“MacroProcessor”接口将会接收编译器传来的处理数据,告诉SourcePlugin.dll应该引用哪些数据。 接着,SourcePlugin.dll利用易源码解析,读出指定易文件的常量表,并根据源码需要整合到程序。 优点: 该操作似乎把易程序携带文件变得复杂了起来,但是实际上不然,它有以下好处:首先,如果你要携带大量的资源文件的话,该方法可以大幅度减小主程序的大小,使得主程序更加轻量化。 其次,本宏支持直接引用外部文件作为资源,极大地方便了编程和文件携带(如果你要备份的话,只需要备份一次资源文件,以后只需要备份主程序代码即可。) 然后,SourcePlugin.dll利用易源码解析,可以直接引用外部易程序的资源文件,减少了储存空间的浪费(如果你要传云盘的话) 最后,本程序还可以直接应用到易模块,以后就不用搞得一个模块十多MB的了,只需要一个100多KB的SourcePlugin.dll,主模块,携带资源的易文件即可,更新模块只需更新主模块(只要不修改资源文件) 缺点: SourcePlugin.dll使用了易源码解析,在编译时需要把携带资源的易文件加载到内存,对于大文件可能会导致易程序无法分配到足够的内存导致程序崩溃,所以对于处理较大的资源文件时,最好先保存你的程序。 SourcePlugin.dll使用的易源码解析在解析很大的易文件时可能导致降低编译速度,不过,我已经大幅度精简了分析部分的源码,保证基本不影响编译速度。 PS: 使用或参考本程序前,请先将“宏插件_源码.e”编译为“SourcePlugin.dll”放到“e\plugins”文件夹下,本帖不接受什么缺少文件的反馈。

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧