求统一资源定位字符串生成函数(针对文件协议)(100分)

  • 主题发起人 主题发起人 Adnil
  • 开始时间 开始时间
A

Adnil

Unregistered / Unconfirmed
GUEST, unregistred user!
加码函数:
输入'c:/autoexec bak.bat';输出'file:///c:/autoexec%20bak.bat';
输入'//server01/autoexec bak.bat';输出'file://server01/autoexec%20bak.bat'
....
.....

解码函数:
加码函数的逆过程。

如果有现成的代码或者系统函数什么的,请说明,谢谢!
 
uses IdGlobal;
procedure TForm1.Button1Click(Sender: TObject);
var
AString,AURLString:string;
begin
AString :='c:/temp/savenight .txt';
AURLString := URLEncode(AString); //URLDecode
caption:=AURLString ;

end;
 
urlencode和urldecode我知道的,不能编码和解码uri的(输出'file://...')
:(
 
兄弟,你也太夸张了吧? 这两个函数稍加修改不就行了?
哎,只怪我心太好,连这也帮你做了。下次这种事不管了。
////////////////////////////
uses IdGlobal;

const
cFileHead1='file:///';
cFileHead2='file://';

procedure NormalizePath(var APath: string);
var
i: Integer;
begin
i := 1;
while i <= Length(APath) do
begin
if APath in LeadBytes then
begin
inc(i, 2)
end
else
if APath = '/' then
begin
APath := '/';
inc(i, 1);
end
else
begin
inc(i, 1);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
AString,AURLString:string;
begin
// AString :='//server01/aw a';
AString :='c:/autoexec bak.bat';
if copy(AString,2,1)=':' then
AString :=cFileHead1+AString
else if copy(AString,1,2)='//' then
AString :=cFileHead2+copy(AString,3,length(AString));

AURLString :=URLEncode(AString);
NormalizePath(AURLString);
caption:=AURLString ;
end;
 
不好意思,不是我懒,我只是担心自己会有些情况没有考虑到,这里的例子只是本地文件和
局域网的文件编码和解码,是否还会有其他情况呢? 所以我想看看是否有现成的例子。
还是多谢savenight兄。
 
接受答案了
 
后退
顶部