如何在运行需要时加载Windows DLL? 听有“动态加载”一说,是什么意思啊?如果有Delphi的源代码,那就太好了。没有什么目的,纯粹是想学习,搞清楚。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 动态加载可以通过对操作系统(OS)中库函数的直接调用来实现对库中例程的访问,操作系统库函数包括LoadLibrary、FreeLibrary和GetProcAddress。在Windows中,这三个函数声明在Windows.pas中;在Linux中,为了跨平台兼容,它们在SysUtils.pas中被实现;实际的Linux操作系统例程是dlopen、dlclose和dlsym(所有的声明在Kylix的Libc单元中;更多的相关信息见man页)。这时,可以使用程序型类型的变量来引用引入的例程。例如,在Windows或Linux中,uses Windows, ...; { 对于Linux,应用SysUtils代替Windows }type TTimeRec = record Second: Integer; Minute: Integer; Hour: Integer; end; TGetTime = procedure(var Time: TTimeRec); THandle = Integer;var Time: TTimeRec; Handle: THandle; GetTime: TGetTime; ...begin Handle := LoadLibrary('libraryname'); if Handle <> 0 then begin @GetTime := GetProcAddress(Handle, 'GetTime'); if @GetTime <> nil then begin GetTime(Time); with Time do WriteLn('The time is ', Hour, ':', Minute, ':', Second); end; FreeLibrary(Handle); end;end;通过这种方法引入例程使,库直到含有调用LoadLibrary的代码执行时才被加载。该库后来通过调用FreeLibrary被卸载。当程序使用的库不必在内存中继续存在时,这种动态加载的方式就可以保持内存和运行程序。 dbgrideh表中表RowDetailPanel如何设置对应的字段关联呀 如何动态新增TObject? 动态数组的问题 delphi有没有函数可以直接把当前日期增加1年 哪里有delphi连接数据库的书? 如何将多个文件生成一个EXE文件? 请教高手 请教下,怎么用DELPHI演示PPT 高分Delphi轉義字符求解 如何获取当前文件的目录 能不能在不断开数据库连接的情况下,让dbedit不自动更新到所连字段? 删除列
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货