下面是我写的Dll里面的函数:
===============================
Function GetSoftInfo(Kind: String):String;stdCall
var
strKind: String;
Begin
strKind := Kind;
If strKind='Version' Then
Result := '系统1。0'
Else IF strKind='Corporation' Then
Result := '有限公司'
Else If strKind='Author' Then
Result :='设计制作';
End;下面是库的调用
========================================
procedure TfrmMain.FormShow(Sender: TObject);
Type TGetSoftInfo = function(Kind:String):String;StdCall;
var
LibHandle: THandle;
SoftInfo: TGetSoftInfo;
begin
LibHandle := LoadLibrary('SoftInfo.dll');
If LibHandle = 0 Then
Begin
Application.MessageBox('部分程序已毁坏,请重新安装','网站更新程序',MB_OK+MB_ICONERROR);
Application.Terminate;
End
Else
Begin
@SoftInfo := GetProcAddress(LibHandle,'GetSoftInfo');
If @SoftInfo=nil then
Application.MessageBox('程序信息库出现错误,请立即联系供应商','网站更新程序',MB_OK+MB_ICONERROR)
Else
Begin
frmMain.Caption := SoftInfo('Version');//出错行
lblVersion.Caption := SoftInfo('Version');//出错行
lblCorp.Caption := softInfo('Corporation');//出错行
End;
FreeLibrary(LibHandle);
End;
end;
错误提示:
=========
Access violation at address 004042D6 in module 'WebUpdate.exe'. Read of address 01030C0C.
急需帮助,万分感激!
===============================
Function GetSoftInfo(Kind: String):String;stdCall
var
strKind: String;
Begin
strKind := Kind;
If strKind='Version' Then
Result := '系统1。0'
Else IF strKind='Corporation' Then
Result := '有限公司'
Else If strKind='Author' Then
Result :='设计制作';
End;下面是库的调用
========================================
procedure TfrmMain.FormShow(Sender: TObject);
Type TGetSoftInfo = function(Kind:String):String;StdCall;
var
LibHandle: THandle;
SoftInfo: TGetSoftInfo;
begin
LibHandle := LoadLibrary('SoftInfo.dll');
If LibHandle = 0 Then
Begin
Application.MessageBox('部分程序已毁坏,请重新安装','网站更新程序',MB_OK+MB_ICONERROR);
Application.Terminate;
End
Else
Begin
@SoftInfo := GetProcAddress(LibHandle,'GetSoftInfo');
If @SoftInfo=nil then
Application.MessageBox('程序信息库出现错误,请立即联系供应商','网站更新程序',MB_OK+MB_ICONERROR)
Else
Begin
frmMain.Caption := SoftInfo('Version');//出错行
lblVersion.Caption := SoftInfo('Version');//出错行
lblCorp.Caption := softInfo('Corporation');//出错行
End;
FreeLibrary(LibHandle);
End;
end;
错误提示:
=========
Access violation at address 004042D6 in module 'WebUpdate.exe'. Read of address 01030C0C.
急需帮助,万分感激!
解决方案 »
- 有点难度的问题:如何锁定键盘和鼠标?
- 问几个比较变态的DELPHI的问题,期待高手献身解答 :D 关于 WebBrowser
- 整型数字压缩成字符的算法
- 如给一个存储过程传递参数?
- 天啊!!救命啊!!!關於數據庫程序運行時跳出CPU窗口的問題,(100分送上)
- 我的随机函数为什么总是指向同一条记录(急急!帮帮我,分不够可以加)
- 怎样实现像IE浏览器里的“脱机工作”?完全要与IE的一样!
- 请教select的问题...
- delphi 操作excel表
- Delphi可以通过ADO直接连DB2吗?
- 高手指点:给个好的图标制作工具,找了半天没有,最好是能加文字的软件,谢谢!
- 日期,星期操作!!!!!在线给分!
方法1,用PCHAR不要用STRING;
方法2,用STRING要在你的USES第一个加SHAREMEM单元,注意,DLL和调用DLL的
UNIT文件都需要;
Windows兼容类型PChar比较好的!
Function GetSoftInfo(Kind: shortString):shortString;stdCall
var
strKind: shortString;
Begin
strKind := Kind;
If strKind='Version' Then
Result := '系统1。0'
Else IF strKind='Corporation' Then
Result := '有限公司'
Else If strKind='Author' Then
Result :='设计制作';
End;
// 用pchar 类型的改写:
Function GetSoftInfo(Kind: shortString):pchar;stdCall
var
strKind: shortString;
Begin
strKind := Kind;
If strKind='Version' Then
Result := '系统1。0'
Else IF strKind='Corporation' Then
Result := '有限公司'
Else If strKind='Author' Then
Result :='设计制作';
End;