function DelFileExt(FileName : String ): string;
var
I,j: Integer;
s : String ;
Source : String ;
begin
Source := FileName ;
j := 0 ;
I := 1 ;
while I <> 0 do
begin
I := Pos('.',FileName) ;
if I = 0 then
begin
I := J ;
Break ;
end
Else
begin
S := Copy(FileName,(i+1),(Length(FileName) - I)) ;
FileName := S ;
j := I + J ;
End;
end;
FileName := Source ;
if I = 0 then Result := FileName
Else
Result := Copy(FileName, 1, I - 1);
end;
function DelFileExt(const FileName : String ): string;
var
I: Integer;
begin
i := Pos('.',FileName) ;
if I = 0 then Result := FileName
Else
Result := Copy(FileName, 1, I - 1);
end;
楼上写的东西看起来好麻烦。
我说点简单的,
如果你保证后缀是三个字母
fname:=copy(fname,1,length(fname)-4);
如果不能保证是三个就用
for i:=length(fname) downto 1 do
if fname[i]='.' then
begin
id:=i;
exit;
end;
fname:=copy(fname,1,length(fname)-id);
function ChangeFileExt(const FileName, Extension: string): string;
var
I: Integer;
begin
I := LastDelimiter('.' + PathDelim + DriveDelim,Filename);
if (I = 0) or (FileName[I] <> '.') then I := MaxInt;
Result := Copy(FileName, 1, I - 1) + Extension;
end;
SysUtils单元中,改下:
function DelFileExt(const FileName): string;
var
I: Integer;
begin
I := LastDelimiter('.' + PathDelim + DriveDelim,Filename);
if (I = 0) or (FileName[I] <> '.') then I := MaxInt;
Result := Copy(FileName, 1, I - 1);
end;