var s:string; i:integer; x:integer; begin s:='/d/ew/h.fff'; for i:=length(s) downto 1 do if s[i]='/' then x:=i;
改一下procedure TForm1.Button1Click(Sender: TObject); var s:string; i:integer; x:integer; begin s:='/d/ew/h.fff'; for i:=length(s) downto 1 do if s[i]='/' then begin x:=i; break; end; showmessage(inttostr(x)); end;
function FindPosition(s: string; FindChar: Char; var Position: Integer): Boolean; //s: '/d/ew/h.fff' FindChar: '/' begin Result := false; Position := Length(s) + 1; repeat Dec(Position); until (Position <= 0) or (s[Position] = FindChar); Result := (Position > 0); end;
可以用现成函数"搭建"一个: uses StrUtils;function PosReverse(const Sub, S: String): Integer; begin Result := Pos(Sub, AnsiReverseString(S)); if Result > 0 then Result := Length(S) - Result + 1; end;procedure TForm1.FormCreate(Sender: TObject); begin ShowMessage (IntToStr(PosReverse('/', '/d/ew/h.fff'))); end;
如果Sub要支持多个字符, 则还要修改一下: uses StrUtils;function PosReverse(const Sub, S: String): Integer; begin Result := Pos(AnsiReverseString(Sub), AnsiReverseString(S)); if Result > 0 then Result := Length(S) - Result - Length(Sub) + 2; end;procedure TForm1.FormCreate(Sender: TObject); begin ShowMessage (IntToStr(PosReverse('/h', '/d/ew/h.fff'))); end;
var
s:string;
i:integer;
x:integer;
begin
s:='/d/ew/h.fff';
for i:=length(s) downto 1 do
if s[i]='/' then
x:=i;
var
s:string;
i:integer;
x:integer;
begin
s:='/d/ew/h.fff';
for i:=length(s) downto 1 do
if s[i]='/' then
begin
x:=i;
break;
end;
showmessage(inttostr(x));
end;
function FindPosition(s: string; FindChar: Char; var Position: Integer): Boolean; //s: '/d/ew/h.fff' FindChar: '/'
begin
Result := false;
Position := Length(s) + 1;
repeat
Dec(Position);
until (Position <= 0) or (s[Position] = FindChar);
Result := (Position > 0);
end;
uses StrUtils;function PosReverse(const Sub, S: String): Integer;
begin
Result := Pos(Sub, AnsiReverseString(S));
if Result > 0 then Result := Length(S) - Result + 1;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage (IntToStr(PosReverse('/', '/d/ew/h.fff')));
end;
uses StrUtils;function PosReverse(const Sub, S: String): Integer;
begin
Result := Pos(AnsiReverseString(Sub), AnsiReverseString(S));
if Result > 0 then Result := Length(S) - Result - Length(Sub) + 2;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage (IntToStr(PosReverse('/h', '/d/ew/h.fff')));
end;