我做一个程序,是来保存照片的。我采用是保存路径,
我使用的控件是OpenPictureDialog1,来取路径,
取出来之后:F:\Picture\2008\2007102712374222458.jpg
我想只bc 取其中的一部分\2008\2007102712374222458.jpg,这样怎么做呀,
现在的技术难度是:取一部分路径和文件名称。
请大家多多指教。
我使用的控件是OpenPictureDialog1,来取路径,
取出来之后:F:\Picture\2008\2007102712374222458.jpg
我想只bc 取其中的一部分\2008\2007102712374222458.jpg,这样怎么做呀,
现在的技术难度是:取一部分路径和文件名称。
请大家多多指教。
不固定就找第二个\,copy之后的内容
s := StringReplace(s, 'F:\Picture', '', []);
如果用户选择的路径是:'D:\Picture\2008\2007102712374222458.jpg ';
就没有法了,我想问有没有直接从后面往前切取字符串的:如:“\2008\2007102712374222458.jpg ”,
这样就能解决问题,不知有没有这样的函数,关键是文件的路径、名称都是不固定的。
那怎么解决?
'e:\aaaaa\bbbbbbbb\2007102712374222458.jpg'呢?
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;
因为用户选'D:\Picture\2008\2007102712374222458.jpg'他也要能得到\2008\2007102712374222458.jpg'
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;
uses FileCtrl
ProcessPath//试一下