如何把'c:\program\...\c80.exe'中的C80提取出来. 其中C80的长度是不知道的,可能是c8080等可以确定的是它的前面一定'/'后面是'.exe'有什么最简洁的方法?

解决方案 »

  1.   

    var
      sFileName :string ;
    begin
      sFileName := ExtractFileName('c:\program\c80.exe') ;
      sFileName := ChangeFileExt(sFileName, '') ;
    end;
      

  2.   

    给你一组函数,我一般在字符串操作时都会用着,不仅是用在路径中 ^^!unit ToolsUnit;interface  function StrLeft(const mStr: String; mDelimiter: String): String;
      function ListCount(mList: String; mDelimiter: String): Integer;
      function ListValue(mList: String; mIndex: Integer; mDelimiter: String =','): String;implementation//============================  StrLeft  =====================================//
    function StrLeft(const mStr: string; mDelimiter: string): string;
    { 返回左分隔字符串 }
    begin
      Result := Copy(mStr, 1, Pos(mDelimiter, mStr) - 1);
    end;//===========================  ListCount =====================================//
    function ListCount(mList: string; mDelimiter: string ): Integer;
    { 返回列表数 }
    var
      I, L: Integer;
      mListC:String;
    begin
      Result := 0;
      if mList = '' then Exit;
      mListC := mList;
      L := Length(mList);
      I := Pos(mDelimiter , mList);
      while I > 0 do begin
        mList := Copy(mList , I + Length(mDelimiter), L);
        I := Pos(mDelimiter , mList);
        Inc(Result);
      end;
      Inc(Result);
      if PChar(mListC)[0] = mDelimiter then
        Result := Result - 1;
      if PChar(mListc)[Length(mListc)-1] = mDelimiter then
        Result := Result - 1;
    end;//=============================  ListValue  ==================================//
    function ListValue(mList: string; mIndex: Integer; mDelimiter: string = ','): string;
    { 返回列表指定位置的元素 }
    var
      I, L, K: Integer;
    begin
      if Pchar(mList)[Length(mList)-1] <> mDelimiter then
        mList:=mList + mDelimiter;
      L := Length(mList);
      I := Pos(mDelimiter, mList);
      K := 0;
      Result := '';
      while (I > 0) and (K <> mIndex) do begin
        mList := Copy(mList, I + Length(mDelimiter), L);
        I := Pos(mDelimiter, mList);
        Inc(K);
      end;
      if K = mIndex then
        Result := StrLeft(mList + mDelimiter, mDelimiter);
    end;end.例程:
    var
      aTempStr: String;
    begin
      aTempStr := ListValue('c:\program\c80.exe', ListCount('c:\program\c80.exe', '\') - 1, '\');
    end;
      

  3.   

    啊!!例程有一点错,改一下:var
      aTempStr: String;
    begin
      aTempStr := ListValue('c:\program\c80.exe', ListCount('c:\program\c80.exe', '\') , '\');
    end;
      

  4.   

    CDSoftwareWj(95927) 的东东不错哦