var
  str:string;
begin
  str:='adsads\.....';\\这里为什么会显示是最后面一个位置,我试着给多几个点 STR:='dafd.........'结果一样   !!!???
  if LastDelimiter('\.', str) = Length(str) then
       showmessage('最后位置');
       
\\而在这里却不一样.....为什么??
  if length('a......')= length('a....') then
       showmessage('一样长');
end;  

解决方案 »

  1.   

    delphi里面LastDelimiter函数是下面这么定义的,你用pos试试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
    {$IFDEF MSWINDOWS}
          if (ByteType(S, Result) = mbTrailByte) then
            Dec(Result)
          else
            Exit;
    {$ENDIF}
    {$IFDEF LINUX}
        begin
          if (ByteType(S, Result) <> mbTrailByte) then
            Exit;
          Dec(Result);
          while ByteType(S, Result) = mbTrailByte do Dec(Result);
        end;
    {$ENDIF}
        Dec(Result);
      end;
    end;
      

  2.   

    LastDelimiter返回的是Delimiters集合中的任何一个字符在源字符串中出现的最后一个位置,如'\.','.'出现的最后一个位置是length(str),如果换成'.a',结果也是length(str)