CnPack Forum


 
Subject: 如何取得代码所在单元的文件名
atkins
新警察
Rank: 1



UID 17523
Digest Posts 0
Credits 8
Posts 3
点点分 8
Reading Access 10
Registered 2007-6-14
Status Offline
Post at 2008-6-12 21:02  Profile | Blog | P.M. 
如何取得代码所在单元的文件名

如何取得代码所在单元的文件名?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6812
Posts 3579
点点分 6812
Reading Access 102
Registered 2004-3-28
Status Online
Post at 2008-6-12 22:29  Profile | Blog | P.M. 
你是说Open ToolsAPI里头?
参考CnWizards源码里头CnWizUtils.pas里头的CnOtaGetCurrentSourceFile函数。
Top
atkins
新警察
Rank: 1



UID 17523
Digest Posts 0
Credits 8
Posts 3
点点分 8
Reading Access 10
Registered 2007-6-14
Status Offline
Post at 2008-6-13 11:39  Profile | Blog | P.M. 
不使用Open ToolsAPI能否做到?
Top
atkins
新警察
Rank: 1



UID 17523
Digest Posts 0
Credits 8
Posts 3
点点分 8
Reading Access 10
Registered 2007-6-14
Status Offline
Post at 2008-6-13 11:46  Profile | Blog | P.M. 
以下是我在网上找到的资料,但好象并不能完全解决问题。
=======================================
在做了个控件,在控件中我想得到当前的单元文件名,请问有哪位大哥会?   
   
  我用了这样的方法,但只能得到当前的窗口名.   
   
  constructor   TSkynewWriteDFM.Create(AOwner:   TComponent);   
  begin   
      inherited;   
      fversion:=c_version   ;   
      FDFMfilename:=self.Owner.Name+'.DFM';//在属性列中会出现的   
      FActive:=false;   
  end;



  self.Owner.Name+'.DFM'   
   
  也不是绝对安全(正确)的,比如,将你的控件放在一个Panel中以后。

是我没有说清楚,我的控件是不可见控件,他的Owner只能是Form.

uses   TypInfo;   
   
  constructor   TSkynewWriteDFM.Create(AOwner:   TComponent);   
  begin   
      inherited;   
      fversion:=c_version   ;   
      FDFMfilename:=GetTypeData(ClassInfo)^.UnitName   +   '.DFM';//在属性列中会出现的   
  //...   
  end;   


  不对啊,得到的却是SkynewWriteDFM.DFM

我想得到当前Form对应的单元文件名,即Unit后面的文件名.

^v^   要学会举一反三   
   
  uses   TypInfo;   
   
  constructor   TSkynewWriteDFM.Create(AOwner:   TComponent);   
  begin   
      inherited;   
      fversion:=c_version   ;   
      FDFMfilename:=GetTypeData(AOwner.ClassInfo)^.UnitName   +   '.DFM';//在属性列中会出现的   
                                                      //~~~~~~~   
  //...   
  end;   
   
  TObject::ClassInfo   返回类信息指针   
  通过GetTypeData()可以到底这个指针指向的类描述数据,如所在声明单元名   
  如果是设计期间的元件,它们的Owner都为当前所设计Form
=======================================
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6812
Posts 3579
点点分 6812
Reading Access 102
Registered 2004-3-28
Status Online
Post at 2008-6-13 14:46  Profile | Blog | P.M. 
明白了,看看TTypeData的结构定义?里头tkClass里头有个UnitName,就是它了。
Top
 




All times are GMT++8, the time now is 2024-9-19 09:03

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.012609 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP