用GetCurrentDir取当前路径,却返回c:/windows/desktop。(50分)

  • 主题发起人 主题发起人 redstone
  • 开始时间 开始时间
R

redstone

Unregistered / Unconfirmed
GUEST, unregistred user!
用GetCurrentDir取当前路径。当从桌面快捷方式运行时,却总返回c:/windows/desktop,
有办法吗?
 
GetCurrentDir返回的是当前的工作路径,你可以试着修改一个快捷方式的工作路径再看一看。
如何要返回程序所在的路径好象是用GetModuleFileName,记不清了,查一下MSDN吧。
 
ExtractFilePath(ParamStr(0)); ;//当前程式路径;
GetCurrentDir //返回的是当前的工作路径
 
通过下面的函数,可以方便地对文件名进行操作:
1. ExpandFileName
将当前驱动器名(盘符)、路径名和指定的文件名合成一个绝对文件名。
函数原型如下:
function ExpandFileName(const FileName: string): string;
返回值为合成的绝对文件名。
2. ExpandUNCFileName
获取一个以U N C 格式的包括网络驱动器名的绝对文件名。
函数原型如下:
function ExpandUNCFileName(const FileName: string): string;
3. ExtractFileDir
从绝对文件名中获取目录名。
函数原型如下:
function ExtractFileDir(const FileName: string): string;
4. ExtractFileDrive
从绝对文件名中获取驱动器号(盘号)。
函数原型如下:
function ExtractFileDrive(const FileName: string): string;
5. ExtractFileExt
从绝对文件名中获取文件名的扩展名。
函数原型如下:
function ExtractFileExt(const FileName: string): string;
6. ExtractFileName
从绝对文件名中获取文件名。
函数原型如下:
function ExtractFileName(const FileName: string): string;
7. ExtractFilePath
从绝对文件名中获取路径名。
函数原型如下:
function ExtractFilePath(const FileName: string): string;
8. ExtractRelativePath
从绝对文件名中获取相对于某一个路径的相对路径名。
函数原型如下:
function ExtractRelativePath(const BaseName, DestName: string): string;
9. ExtractShortPathName
将长文件名转化成短文件名。
函数原型如下:
function ExtractShortPathName(const FileName: string): string;
 
如要获得exe文件所在的路径,则用:
; ExtractFilePath(Application.ExeName)
如是当前路径,则是你桌面快捷方式中的[起始位置]没有设置好。
 
API函数GetcurrentDirectory(DWORD nBufferLength,LPTSTR lpBuffer)
 
GetCurrentDir返回的是当前文件的路径,你遇到这个问题的原因一定是你的快捷方式的
起始位置不对或是为空,如果你的快捷方式的起始位置是你程序所在位置就不会出现这种
情况.
 
Filename:=ExtractFilePath(Application.ExeName);
这个句子可以取得当前程序的路径;我试过的
 
用ExtractFileDir函数也可以的
 
下面是我的个人所得税里面取得程序路径并把计算过程和结果存入当前路径的一个过程的
源码。你可以看看。
S:=DateToStr(Date);//取得程序运行的日期
; ; S:=S+'.txt';
; ; //GetDir(0,Path); //取得程序的路径
; ; Path:=ExTractFilePath(Application.exename);//取得程序运行的路径含"/"
; ; //Path:=Application.ExeName;//付值路径
; ; S:=Path+S; //确定文件名(如C:/windows/200153.txt)
; ; AssignFile(f,S); //关联文件

; ; If Not FileExists(S) then ;//判断文件是否存在
; ; ; ;begin
; ; ; ; ;Rewrite(f);
; ; ; ; ;//if Fgfh='Dh' then
; ; ; ; ; ; //application.MessageBox('使用逗号分割','提示',64)

; ; ; ; ;if Fgfh='Fh' then
; ; ; ; ; ; // application.MessageBox('使用分号分割','提示',64)
; ; ; ; ; ; WriteLn(f,'姓名'+';'+'级别'+';'+'工龄'+';'+'赔缴'+';'
; ; ; ; ; ; ; ; ;+'所得额'+';'
; ; ; ; ; ; ; ; ;+'调增项目'+';'+'调增额'+';'+'扣除项目'
; ; ; ; ; ; ; ; ;+ ';'+'扣除额'+';'
; ; ; ; ; ; ; ; ;+'应税所得额'+';'+'税率'+';'+'速算扣除数'+';'
; ; ; ; ; ; ; ; ;+'个人所得税')
; ; ; ; ;else if Fgfh='Th' then
; ; ; ; ; ; //application.MessageBox('使用特殊符号(&)分割','提示',64)
; ; ; ; ; ; ;WriteLn(f,'姓名'+'&'+'级别'+'&'+'工龄'+'&'+'赔缴'+'&'
; ; ; ; ; ; ; ; ;+'所得额'+'&'
; ; ; ; ; ; ; ; ;+'调增项目'+'&'+'调增额'+'&'+'扣除项目'
; ; ; ; ; ; ; ; ;+ '&'+'扣除额'+'&'
; ; ; ; ; ; ; ; ;+'应税所得额'+'&' +'税率'+'&'+'速算扣除数'+'&'
; ; ; ; ; ; ; ; ;+'个人所得税')
; ; ; ; ;else
; ; ; ; ; ; //application.MessageBox('使用逗号分割','提示',64);

; ; ; ; ; ; ;WriteLn(f,'姓名'+','+'级别'+','+'工龄'+','+'赔缴'+','
; ; ; ; ; ; ; ; ;+'所得额'+','
; ; ; ; ; ; ; ; ;+'调增项目'+','+'调增额'+','+'扣除项目'
; ; ; ; ; ; ; ; ;+ ','+'扣除额'+','
; ; ; ; ; ; ; ; ;+'应税所得额'+','+'税率'+','+'速算扣除数'+','
; ; ; ; ; ; ; ; ;+'个人所得税');
; ; ; ; ; ; ; ; ;
; ; ; ; ;CloseFile(f); //关闭文件
; ; ; ;end;
 
老天,怎么这么罗索,
用Application.exename就可以拉,
在桌面快捷方式也行,
然后再借助某些函数(上面提到过),想要路径,文件名,扩展名都可以.
 
接受答案了.
 
后退
顶部