你反过来取啊,不就行吗? var i:integer; tempstr:string; const path='c:\mp3\cel\oo.zip';tempstr:=''; for i:=length(path) downto 1 do if path[i]='\' then tempstr:=copy(path,i+1,length(path)-i);
filename := ExtractFileName(path);
定长的用rightstr(path,6) 可以 赚点分吧
我接分,extractfilename()楼上看书不够哟;
var i:integer; tempstr:string; const path='c:\mp3\cel\oo.zip';tempstr:=''; for i:=length(path) downto 1 do if path[i]='\' then tempstr:=copy(path,i+1,length(path)-i); //=========找到最后一个'\ 截取
呵呵,楼上的几个兄弟弄反了,下面才对procedure TForm1.Button1Click(Sender: TObject); const path='c:\mp3\cel\oo.zip'; var i:integer; tempstr:string; begin tempstr:=''; for i:=1 to length(path) do if path[i]='\' then tempstr:=copy(path,i+1,length(path)-i); Edit1.text:=tempstr; end;
你反过来取啊,不就行吗? var i:integer; tempstr:string; const path='c:\mp3\cel\oo.zip';tempstr:=''; for i:=length(path) downto 1 do if path[i]='\' then begin tempstr:=copy(path,i+1,length(path)-i); break; end;
function ExtractFileName(const FileName: string): string; var I: Integer; begin I := LastDelimiter(PathDelim + DriveDelim, FileName);//PathDelim = '\'; //DriveDelim = ':'; //查找最后一个'\'的位置 Result := Copy(FileName, I + 1, MaxInt); end; function LastDelimiter(const Delimiters, S: string): Integer; var P: PChar; begin Result := Length(S); P := PChar(Delimiters); while Result > 0 do begin if (S[Result] <> #0) and (StrScan(P, S[Result]) <> nil) then if (ByteType(S, Result) = mbTrailByte) then //如果在字符串S中,第Result 个字符 //为双字节的第二位 Dec(Result) else Exit; Dec(Result); end; end;
看看这100分把大家闹腾的,算了俺也写个函数献丑了. ^_^ function GetFileName(FullFileName:String):String; var i:Integer; begin Result:=''; for i:=Length(FullFileName) downto 1 do begin if not(FullFileName[i] in ['\','/']) then Result:=FullFileName[i]+Result else Break; end; end; //测试用例如下 ShowMessage(GetFileName('c:\asdfasdf\asds\asdfas\asfas\asdfasdf\asds\asdfas\asfas\wizard.com'));
var
i:integer;
tempstr:string;
const
path='c:\mp3\cel\oo.zip';tempstr:='';
for i:=length(path) downto 1 do
if path[i]='\' then
tempstr:=copy(path,i+1,length(path)-i);
赚点分吧
i:integer;
tempstr:string;
const
path='c:\mp3\cel\oo.zip';tempstr:='';
for i:=length(path) downto 1 do
if path[i]='\' then
tempstr:=copy(path,i+1,length(path)-i);
//=========找到最后一个'\ 截取
const
path='c:\mp3\cel\oo.zip';
var
i:integer;
tempstr:string;
begin
tempstr:='';
for i:=1 to length(path) do
if path[i]='\' then
tempstr:=copy(path,i+1,length(path)-i);
Edit1.text:=tempstr;
end;
你反过来取啊,不就行吗?
var
i:integer;
tempstr:string;
const
path='c:\mp3\cel\oo.zip';tempstr:='';
for i:=length(path) downto 1 do
if path[i]='\' then
begin
tempstr:=copy(path,i+1,length(path)-i);
break;
end;
extractfileext //取文件后缀
extractfilepath //取文件路径
extractfildir //取文件目录
........
delphi提供了这么多文件操作函数,为什么不用呢 ...
var
I: Integer;
begin
I := LastDelimiter(PathDelim + DriveDelim, FileName);//PathDelim = '\';
//DriveDelim = ':';
//查找最后一个'\'的位置
Result := Copy(FileName, I + 1, MaxInt);
end;
function LastDelimiter(const Delimiters, S: string): Integer;
var
P: PChar;
begin
Result := Length(S);
P := PChar(Delimiters);
while Result > 0 do
begin
if (S[Result] <> #0) and (StrScan(P, S[Result]) <> nil) then
if (ByteType(S, Result) = mbTrailByte) then //如果在字符串S中,第Result 个字符
//为双字节的第二位
Dec(Result)
else
Exit; Dec(Result);
end;
end;
extractfileext //取文件后缀
extractfilepath //取文件路径
extractfildir //取文件目录
extractfilename extractfilepath extractfildir 。。
AnsiCompareText 函数 比较字符串(不区分大小写)
AnsiLowerCase 函数 将字符转换为小写
AnsiUpperCase 函数 将字符转换为大写
Caption 属性 标签文字的内容
Chr 函数 返回指定序数的字符
CompareStr 函数 比较字符串(区分大小写)
Concat 函数 合并字符串
Copy 函数 返回一字符串的子串
DateTimeToStr 函数 将日期时间格式转换为字符串
DateTimeToString 函数 将日期时间格式转换为字符串
DateToStr 函数 将日期格式转换为字符串
Delete 函数 从字符串中删除子串
DisposeStr 函数 释放字符串在堆栈中的内存空间
DitherBackground 属性 使背景色的色彩加重或减少50%
Insert 在字符串中插入子串
IntToHex 将整型数转换为十六进制数
IntToStr 将整型数转换为字符串
IsValidIdent 测试字符串是否为有效的标识符
Length 函数 返回字符串的动态长度
LowerCase 函数 将给定的字符串变为小写
NewStr 函数 在堆栈上分配新的字符串
Pos 函数 在字符串中搜索子串
Str 函数 将数值转换为字符串
StrAlloc 函数 给以NULL结束的字符串分配最大长度-1的缓冲区
StrBufSize 函数 返回存储在由StrAlloc分配的字符缓冲区的最大字符数
StrCat 函数 将一字符串附加到另一字符串尾并返回合并的字符串
StrComp 函数 比较两个字符串
StrCopy 函数 将一个字符串复制到另一个字符串中
StrDispose 函数 释放堆栈上的字符串
StrECopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针
StrEnd 函数 返回指向字符串尾部的指针
StrIComp 函数 比较两个字符串(不区分大小写)
StringToWideChar 函数 将ANSI字符串转换为UNICODE字符串
StrLCat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串
StrLComp 函数 以最大长度比较两个字符串
StrLCopy 函数 将一个字符串中的字符复制到另一个字符串中
StrLen 函数 返回字符串中的字符数
StrLIComp 函数 以最大长度比较两个字符串(不区分大小写)
StrLower 函数 将字符串中的字符转换为小写
StrMove 函数 将一个字符串中的字符复制到另一个字符串中
StrNew 函数 在堆栈上分配一个字符串
StrPas 函数 将以NULL结束的字符串转换为PASCAL类的字符串
StrPCopy 函数 将PASCAL类的字符串复制为以NULL结束的字符串
StrPLCopy 函数 从PASCAL类的最大长度字符串复制为以NULL结束的字符串
StrPos 函数 返回一个字符串在另一个字符串中首次出现指针
StrRScan 函数 返回字符串中最后出现字符的指针
StrScan 函数 返回字符串中出现首字符的指针
StrToDate 函数 将字符串转换为日期格式
StrToDateTime 函数 将字符串转换为日期/时间格式
StrToFloat 函数 将给定的字符串转换为浮点数
StrToInt 函数 将字符串转换为整型
StrToIntDef 函数 将字符串转换为整型或默认值
StrToTime 函数 将字符串转换为时间格式
StrUpper 函数 将字符串中的字符转换为大写
TextToFloat 函数 将字符串(以NULL结束的格式)转换为浮点数
TimeToStr 函数 将时间格式转换为字符串
Trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符
TrimLeft 函数 从给定的字符串中删除首部的空格及控制字符
TrimRight 函数 从给定的字符串中删除尾部的空格及控制字符
UpCase 将字符转换为大写
UpperCase 将给定的字符串变为大写
Val 函数 将字符串转换为整型值
WideCharLenToString 函数 将ANSI字符串转换为UNICODE字符串
WideCharLenToStrWar 函数 将UNICODE字符串转换为ANSI字符串变量
WideCharToString 函数 将UNICODE字符串转换为ANSI字符串
WideCharToStrVar 函数 将UNICODE字符串转换为ANSI字符串变量
下面就是正确的;
var
path : String;
filename : String;path='c:\mp3\cel\oo.zip';
filename := ExtractFileName(path);
path : String;
filename : String;path='c:\mp3\cel\oo.zip';
filename := ExtractFileName(path); 噌点儿分:)
function GetFileName(FullFileName:String):String;
var
i:Integer;
begin
Result:='';
for i:=Length(FullFileName) downto 1 do
begin
if not(FullFileName[i] in ['\','/']) then
Result:=FullFileName[i]+Result
else
Break;
end;
end;
//测试用例如下
ShowMessage(GetFileName('c:\asdfasdf\asds\asdfas\asfas\asdfasdf\asds\asdfas\asfas\wizard.com'));