如何获得相对路径?
我记得,可以用GetCurrentDir(),在VB中有APP.PATH来获得相对路径,用CB编写ISAPI时,怎样设相对路径?就如ASP的APP.PATH一样方便?
多谢!
i_am_hjs@263.net
问题点数:20、回复次数:13Top
1 楼xycleo()虚竹和尚()回复于 2001-05-24 11:49:00 得分 0
GetCurrentPathTop
2 楼xycleo()虚竹和尚()回复于 2001-05-24 11:50:00 得分 0
ExtractFilePathTop
3 楼xycleo()虚竹和尚()回复于 2001-05-24 11:51:00 得分 0
ExtractFileDirTop
4 楼wjzhuang(程序猪)回复于 2001-05-24 11:52:00 得分 10
TApplication应用小技巧:
A.打开相对路径数据文件.通常要打开的数据文件(如程序需要使用的DBF数据文件,TXT/INI文件等)都不是固定路径,而是相对于应用程序的安装目录变化的.
AnsiString filepath;
filepath=ExtractFilePath(Applcation->ExeName);
//ExtractFilePath与ExtractFileDir是有区别的.表现在ExtractFilePath最后总是有"\\",而ExtractFileDir只是在路径为根目录时最后才是"\\"
Table1->DatabaseName=filepath+"data";
Table1->TableName="maindb.dbf";
try{
Table1->Active=true;
}
catch(...)
{
//......
}
另外有一个函数ParamStr(int index)与Application->ExeName有同样效果.ParaStr(0)就是应用程序命令行第一部分.也就是执行文件的全路径.
Top
5 楼wjzhuang(程序猪)回复于 2001-05-24 11:54:00 得分 0
AnsiString currentpath = GetCurrentDir();Top
6 楼czylj(夭夭)回复于 2001-05-24 11:57:00 得分 0
我没有别的可说了,]
好像 c++ builder 的applica....有一个属性,指向当前的目录,不知有没有?Top
7 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2001-05-24 12:16:00 得分 0
我常编ISAPI,知道ExeName与ParamStr(0)都失效,
曾困恼我很久,是一个高手Sakra告诉我,才解决问题,
用API的GetModuleName(Handle)才能取得.DLL的绝对路径;
String CurDir=ExtractFilePath(GetModuleName(handle));
handle在.dll的入口参数中取.
Top
8 楼iPlanet(hjs)回复于 2001-05-25 10:26:00 得分 0
谢谢各位!Top
9 楼dufeng3104(柏桦林)回复于 2001-05-25 10:44:00 得分 0
纠正一下
Sting CurDir=ExtractFilePath(GetModuleFileName(HMODULE hModule,LPTSTR lpFilename,DWORD nSize))
Top
10 楼dufeng3104(柏桦林)回复于 2001-05-25 10:47:00 得分 0
应该是
Sting CurDir=ExtractFilePath(Ansistring(GetModuleFileName(HMODULE hModule,LPTSTR lpFilename,DWORD nSize)))Top
11 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2001-05-25 12:28:00 得分 0
对,我忘了参数Top
12 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2001-05-25 12:36:00 得分 0
你也不对,GetModuleFileName()返回的是串长,不是串,要拆开
Top
13 楼BCB(天下三分明月夜,二分无赖是扬州)回复于 2001-05-25 12:39:00 得分 10
你也不对,GetModuleFileName()返回的是串长,不是串,要拆开
extern HINSTANCE DllHandle;
String CurDir;
void __fastcall TWebModule1::WebModuleCreate(TObject *Sender)
{
char DllPath[256];
GetModuleFileName((HMODULE)DllHandle,DllPath,sizeof(DllPath));
CurDir=ExtractFilePath(DllPath); // 求当前目录
}
Top




