在网上找了半天没有结果,来问问,我想获取程序自身的文件名比如我把Delphi写好的程序放在“D:\123\”里面,然后我F2重命名为“123.exe”哪么请问我要在代码里怎么写才能让一个变量来保存当前文件名,需要什么函数,怎么用,谢谢各位大大。

解决方案 »

  1.   

    也可直接用
    ParamStr(0)
    它就是当前运行程序名
      

  2.   

    获取的是文件路径- -|,这是代码。
    procedure TForm1.FormCreate(Sender: TObject);
    var
      FileName:String[11];
    begin
      FileName:=Application.ExeName;
      Form1.Text:=FileName;
      Memo1.Text:='';
    end;end.
      

  3.   

    1、两种方法
    ParamStr(0)
    Application.ExeName2、简单比较
    跟踪一下VCL源码就会发现,它们其实是殊途同归的
    第1种方法则是调用全局函数ParamStr,是过程式编程风格写法第2种写法通过Application类的ExeName属性,是OO编程风格写法
    property ExeName: string read GetExeName;function TApplication.GetExeName: string;
    begin
      Result := ParamStr(0);
    end;和第1种方法走到一起了,呵呵再翻开ParamStr的实现,会发现最终是调用了API函数GetModuleFileName
    那么,第3种方法就有了,直接调用GetModuleFileName
    当然,实际运用中不必那么费事从这个小例子管中窥豹,也可以一瞥VCL对API的层层封装之道3、楼主问题中“重命名为123.exe来保存当前文件名”,表述不是太清楚
    也不知道大家是否都说在点子上
      

  4.   


    (*//
    标题:<<Delphi6函数大全-SysUtils.pas>>
    格式:text
    大小:92671
    制作:Zswang
    日期:2002-01-25
    //*)
    //......首部  function ExtractFilePath(const FileName: string): string; $[SysUtils.pas
    功能  返回文件名所在的路径
    说明  ExtractFilePath('C:\')='C:\';ExtractFilePath('\\Server\Tool\Calc.exe')='\\Server\Tool\'
    参考  function SysUtils.LastDelimiter;function System.Copy
    例子  Edit1.Text := ExtractFilePath(Edit2.Text);
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExtractFileDir(const FileName: string): string; $[SysUtils.pas
    功能  返回文件名所在的目录
    说明  ExtractFileDir('C:\')='C:\';ExtractFileDir('\\Server\Tool\Calc.exe')='\\Server\Tool'
    参考  function SysUtils.LastDelimiter;function System.Copy
    例子  Edit1.Text := ExtractFileDir(Edit2.Text);
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExtractFileDrive(const FileName: string): string; $[SysUtils.pas
    功能  返回文件名所在驱动器
    说明  ExtractFileDrive('C:\')='C:';ExtractFileDrive('\\Server\Tool\Calc.exe')='\\Server\Tool'
    参考  function System.Copy
    例子  Edit1.Text := ExtractFileDrive(Edit2.Text);
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExtractFileName(const FileName: string): string; $[SysUtils.pas
    功能  返回绝对文件名
    说明  ExtractFileName('C:\')='';ExtractFileName('\\Server\Tool\Calc.exe')='Calc.exe'
    参考  function SysUtils.LastDelimiter;function System.Copy
    例子  Edit1.Text := ExtractFileName(Edit2.Text);
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExtractFileExt(const FileName: string): string; $[SysUtils.pas
    功能  返回文件名的扩展名
    说明  ExtractFileExt('C:\')='';ExtractFileExt('\\Server\Tool\Calc.exe')='.exe'
    参考  function SysUtils.LastDelimiter;function System.Copy
    例子  Edit1.Text := ExtractFileExt(Edit2.Text);
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExpandFileName(const FileName: string): string; $[SysUtils.pas
    功能  返回文件名的完整表示
    说明  ExpandFileName('hello.pas')='C:\Program Files\Borland\Delphi6\Projects\hello.pas'
    参考  function Windows.GetFullPathName
    例子  Edit1.Text := ExpandFileName(Edit2.Text);
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExpandFileNameCase(const FileName: string; out MatchFound: TFilenameCaseMatch): string; $[SysUtils.pas
    功能  分情况返回文件名的完整表示
    说明  type TFilenameCaseMatch = (mkNone, mkExactMatch, mkSingleMatch, mkAmbiguous);
    参考  function Windows.GetFullPathName;function SysUtils.SameFileName;function SysUtils.FindFirst
    例子
    ///////Begin ExpandFileNameCase
    procedure TForm1.Button1Click(Sender: TObject);
    var
      vFilenameCaseMatch: TFilenameCaseMatch;
    begin
      Edit1.Text := ExpandFileNameCase(Edit2.Text, vFilenameCaseMatch);
      SpinEdit1.Value := Ord(vFilenameCaseMatch);
    end;
    ///////End ExpandFileNameCase
    ━━━━━━━━━━━━━━━━━━━━━
    首部  function ExpandUNCFileName(const FileName: string): string; $[SysUtils.pas
    功能  返回LINUX文件名的完整表示
    说明  ExpandUNCFileName('C:/')='C:\'
    参考  function SysUtils.ExpandFileName
    例子  Edit1.Text := ExpandUNCFileName(Edit2.Text);//......