CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

dll的菜鸟问题!!!

楼主amiao(新湖居士)2002-01-11 10:29:00 在 Delphi / VCL组件开发及应用 提问

Dll部分  
  library   Demos;  
  uses  
      SysUtils,  
      Classes;  
   
  {$R   *.res}  
   
  function   ReturnWord(Str1,Str2:   PChar):   String;stdcall;  
  var  
      temp1,temp2:   String;  
  begin  
      temp1   :=   StrPas(Str1);  
      temp2   :=   StrPas(Str2);  
      if   temp1>=temp2   then  
          Result   :=   temp1  
      else  
          Result   :=   temp2;      
  end;  
   
  exports  
      ReturnWord;  
  begin  
  end.  
   
  调用部分  
  type  
      TForm1   =   class(TForm)  
          Edit1:   TEdit;  
          Button1:   TButton;  
          Button2:   TButton;  
          procedure   Button1Click(Sender:   TObject);  
          procedure   Button2Click(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  function   ReturnWord(Str1,Str2:   PChar):   String;stdcall;   external   'Demos.dll';  
  {$R   *.dfm}  
   
  ////以下为动态调用dll  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      Func   :   function   (Str1,Str2:   PChar):   String;stdcall;  
          HD   :   HWND;  
  begin  
      HD   :=   LoadLibrary(PChar('Demos.dll'));  
      if   HD<>0   then  
      begin  
          Func   :=   GetprocAddress(HD,PChar('ReturnWord'));  
          if   Assigned(Func)   then  
              edit1.Text   :=   Func(PChar('abcd'),PChar('aedt'));  
      end;  
      FreeLibrary(HD);  
  end;  
   
  procedure   TForm1.Button2Click(Sender:   TObject);  
  begin  
      Edit1.Text   :=   ReturnWord(PChar('abcd'),PChar('asdw'));  
  end;  
   
  end.  
  结果我不管是静态调用还是动态都出错,各位高手帮我看看吧!!!  
    问题点数:40、回复次数:8Top

1 楼ybli(不懂)回复于 2002-01-11 10:29:55 得分 0

什么提示?Top

2 楼amiao(新湖居士)回复于 2002-01-11 10:30:20 得分 0

报错为'Invalid   pointer   operation'Top

3 楼jackystar(我)回复于 2002-01-11 10:38:29 得分 20

返回值不能用STRING   ,改为PCHAR吧  
  要用就要引用单元DELPHIMM  
  DLL和调用单元中都要。Top

4 楼amiao(新湖居士)回复于 2002-01-11 10:44:58 得分 0

to   我:   谢谢,我看看,等会儿给分Top

5 楼amiao(新湖居士)回复于 2002-01-11 10:50:46 得分 0

to   我:对了,谢谢你Top

6 楼amiao(新湖居士)回复于 2002-01-11 10:53:08 得分 0

不行呀,delphi不认DELPHIMM单元Top

7 楼fei1995(三板斧)回复于 2002-01-11 11:03:50 得分 20

function   ReturnWord(Str1,Str2:   PChar):   String;stdcall;  
  换成  
  function   ReturnWord(Str1,Str2:   PChar):   PChar;stdcall;  
  DLL中不支持STRING传输  
  Top

8 楼amiao(新湖居士)回复于 2002-01-27 17:05:36 得分 0

现在才给分,不好意思Top

相关问题

  • 菜鸟提问--关于DLL
  • dll菜鸟级问题
  • 菜鸟提问:.dll问题!
  • 菜鸟问题 调用dll
  • 菜鸟一问:DLL的问题
  • 一个菜鸟的dll问题
  • 菜鸟问题: 调Dll中的函数
  • 菜鸟求解DLL的导出问题
  • 菜鸟送100分:DLL引用问题!
  • 菜鸟之DLL两问!! 绝对简单

关键词

  • dll
  • returnword
  • pchar
  • 调用
  • hd
  • stdcall
  • tform
  • 单元
  • tobject
  • temp

得分解答快速导航

  • 帖主:amiao
  • jackystar
  • fei1995

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo