我做一个程序,是来保存照片的。我采用是保存路径,
我使用的控件是OpenPictureDialog1,来取路径,
取出来之后:F:\Picture\2008\2007102712374222458.jpg
我想只bc 取其中的一部分\2008\2007102712374222458.jpg,这样怎么做呀,
现在的技术难度是:取一部分路径和文件名称。
请大家多多指教。

解决方案 »

  1.   

    前面的F:\Picture是固定的话直接删掉
    不固定就找第二个\,copy之后的内容
      

  2.   

    从后往前找第二个‘\’字符,然后copy
      

  3.   

    s := 'F:\Picture\2008\2007102712374222458.jpg ';
    s := StringReplace(s, 'F:\Picture', '', []);
      

  4.   

    这个答案是解决了是当图片的位置是已知的在:'F:\Picture\2008\2007102712374222458.jpg '; 
    如果用户选择的路径是:'D:\Picture\2008\2007102712374222458.jpg '; 
    就没有法了,我想问有没有直接从后面往前切取字符串的:如:“\2008\2007102712374222458.jpg ”,
    这样就能解决问题,不知有没有这样的函数,关键是文件的路径、名称都是不固定的。
    那怎么解决?
      

  5.   

    那用户选择的是
    'e:\aaaaa\bbbbbbbb\2007102712374222458.jpg'呢?
      

  6.   

    我想LZ想取得图片相对的路径,D中有现成的函数procedure TForm1.Button1Click(Sender: TObject);
    var
      BasePath, APath, RelativePath: String;
    begin
      BasePath := 'F:\Picture\';//最后路径一定要加上'\'
      APath := 'F:\Picture\2008\2007102712374222458.jpg';
      RelativePath := ExtractRelativePath(BasePath, APath);
      ShowMessage(RelativePath);//这样出来结果是"2008\2007102712374222458.jpg"
      ShowMessage('\'+RelativePath);//这个就是你要的结果
    end;
      

  7.   

    他要的不是相对路径,所以把我搞糊涂了,不知道他要什么了
    因为用户选'D:\Picture\2008\2007102712374222458.jpg'他也要能得到\2008\2007102712374222458.jpg'
      

  8.   

    我就在想,用户如果选F:\2007102712374222458.jpg该得到什么
      

  9.   

    你用这个,我试过了。
    procedure TForm1.Button1Click(Sender: TObject);
      function getstr(sepater,s:String):String;
      var
        i,j:integer;
      begin
         result:='';
         i:=pos(sepater,s);
         j:=0;
         while i>0 do begin
           delete(s,1,i);
           i:=pos(sepater,s);
           inc(j);
           if j=2 then begin
             result:=sepater+s;
             break;
           end;
         end;  end;
    var
      s:String;
    begin
      if opendialog1.Execute and (opendialog1.FileName<>'') then begin
         s:=opendialog1.FileName;
         edit1.Text :=s;
         edit2.Text :=getstr('\',s);
      end;
    end;
      

  10.   


    uses FileCtrl
    ProcessPath//试一下