全路径已得到.比如,已得C:\MySql\qq\ww\zz\xx\123.txt
                  现想得:相对ww的路径: zz\xx\123.txt  如何?

解决方案 »

  1.   

    如果已知ww的全路径为SPath,
    AnsiString P = ExtractFilePath("123.txt");
    int L = P.Length();
    int M = SPath.Length();
    AnsiString RelativePath = P.SubString(M+1, L-M);
      

  2.   

    函数 说明 
    ExpandFileName() 返回文件的全路径(含驱动器、路径) 
    ExtractFileExt() 从文件名中抽取扩展名 
    ExtractFileName() 从文件名中抽取不含路径的文件名 
    ExtractFilePath() 从文件名中抽取路径名 
    ExtractFileDir() 从文件名中抽取目录名 
    ExtractFileDrive() 从文件名中抽取驱动器名 
    ChangeFileExt() 改变文件的扩展名 
    ExpandUNCFileName() 返回含有网络驱动器的文件全路径 
    ExtractRelativePath() 从文件名中抽取相对路径信息 
    ExtractShortPathName() 把文件名转化为DOS的8·3格式 
    MatchesMask() 检查文件是否与指定的文件名格式匹配   
      

  3.   

    to Dala:不行呀!,帮忙再看看.
    这是我的代码还有你的
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {   AnsiString filename;
    if(OpenDialog1->Execute()){   filename = OpenDialog1->FileName;
       Edit1->Text=filename;
    AnsiString P = ExtractFilePath(filename);
    int L = P.Length();
    int M = Edit1->Text.Length();
    AnsiString RelativePath = P.SubString(M+1, L-M);
     Edit2->Text=RelativePath;
    };        
    }得不到结果。
      

  4.   

    to wjzhuang(困惑中的程序猪) 
    请教ExtractRelativePath例子!!谢谢
      

  5.   

    原型:extern PACKAGE AnsiString __fastcall ExtractRelativePath(const AnsiString BaseName, const AnsiString DestName);   功能:从文件名中抽取相对路径信息,如"..\sss\ss.asd"这种形式  参数:BaseName:基准文件名;DestName:目标文件名  例:ShowMessage(ExtractRelativePath("D:\\Source\\c\\1.123","D:\\Source\\Asm\\dz.asm"));/*显示"..\asm\dz.asm"*/
      

  6.   

    多谢!还有一个问题,就是我还需要知道一个文件所在文件夹名,不是全路径
    如:C:\MySql\qq\ww\zz\xx\123.txt
    我只想得到: xx
      

  7.   

    ExtractFileDir() 从文件名中抽取目录名 
      

  8.   

    ExtractFileDir() 从文件名中抽取目录名 
      

  9.   

    ExtractFileDir() 抽取得全目录路径,不是文件所在目录 xx就是我还需要知道一个文件所在文件夹名,不是全路径
    如:C:\MySql\qq\ww\zz\xx\123.txt
    我只想得到: xx 
      

  10.   

    先取得C:\MySql\qq\ww\zz\xx\123.txt
    在得到C:\MySql\qq\ww\zz\xx然后从后向前找到第一个"\",其后的字符当然是你要的了.至于前两布的实现上面的仁兄们
    讲得很清楚了.