请问有这样的字符串转换函数吗?把"c:\myfile\aaa.txt"转成"myfile\aaa.txt";
还有这样"c:\myfile\aaa\bbb.txt"转成"aaa\bbb.txt"
如果没有这样的转换函数,请问如何写代码。

解决方案 »

  1.   

    var
    s,s1:string;
    begin
    s:='c:\myfile\aaa.txt';
    s1:=copy(s,3,length(s)-3);
    end;
      

  2.   

    function IsNum(str: string): string;
    var
      i,j: Integer;
      s,s1,s2:string;
    begin
        j:=0;  //判断j出现的次数。倒序进来。当出现第二次主不再加了。
        for i := Length(str) downto 1 do
        begin
        if (str[i]='\') And (j=2); then
         break;
         else   
         j=inc(j);
         s1:=s1+str[i];
        end;
        
    //再把s1 的内容倒顺过来。
       for i:=length(s1) downto 1 do
       s2:=s2+s1[i];
    end;
      

  3.   

    function IsNum(str: string): string;
    var
      i,j: Integer;
    begin
        j:=0;  //判断j出现的次数。倒序进来。当出现第二次主不再加了。
        Result :='';
        for i := Length(str) downto 1 do
        begin
        if (str[i]='\') And (j=2) then
           break
        else   
          inc(j);
         Result:=str[i]+Result;
        end;
    end;
      

  4.   

    楼主的名字终于改掉了。你的转换难道没有什么规律吗?举的这两个例子,不是很好理解呀!可以用 ExtractFileName 和 ExtractFilePath 得到完整文件名中的文件名和路径。
      

  5.   

    procedure ReadFileName(var MyFileList : TStringList; const AnyFile:String);
    var
      Found:integer;
      sr:TSearchRec;
    begin
      if FileGetAttr(AnyFile)<>faDirectory then//不是目录
      begin
        MyFileList.Add(AnyFile);
        Exit;
      end;
      Found:=FindFirst(AnyFile+'\*.*',faAnyFile,sr);
      while Found=0 do
        begin
          if (sr.Name<>'.')and(sr.Name<>'..') then
            begin
            ReadFileName(MyFileList,AnyFile+'\'+sr.Name);
            end;
          Found:=FindNext(sr);
        end;
      if(sr.Name<>'.')and(sr.Name<>'..') then
        FindClose(sr);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      MyFileList : TStringList;
    begin
      MyFileList := TStringList.Create;
      ReadFileName(MyFileList,'c:\xxx\yyy');//随便填文件夹
      Memo1.Text :=MyFileList.Text;//如何在这里显示“YYY”文件夹里的所有文件和后面的路径
      MyFileList.Free ;
    end;
    我的问题应该要这么问:打开一个文件夹把文件夹后面的文件名全部显示
    包括子文件夹下的文件名和每个文件名的路径,这个路径只取打开这个文件夹后面的路径,
    前面的路径不显示。
    如ReadFileName(MyFileList,'c:\xxx\yyy');//只显示"yyy\...\...\..."