getsubstr("abc-defg-hi",'-');
----------
getsubstr(char *str,char cstr){
char *substr=str+strlen(str);
for (;substr!=cstr&&substr>str;substr--);
return substr;
}

解决方案 »

  1.   

    function f(const dst:string):string;
    var
      S:string;
      i:integer;
    begin
      s := '';
      i := Length(dst);
      while i >= 1 do
      begin
        if dst[i]='-' then break;
        s := dst[i]+s;
        dec(i);
      end;
      result := s;
    end;
      

  2.   

    循环找出最后一个“-”的位置,再用COPY函数截取后面的字符串就可以了
    或者循环去掉“-”前的字符串,最后剩下的就是你要的字符串
      

  3.   

    function f(str:string):string;
    begin
     while pos(str,'-')<>-1 then
      str:=copy(str,pos(str,'-')+1,length(str)-pos(str,'-'));
     result:=str;
    end;
      

  4.   

    showmessage('abc-defg',length('abc-defg')-4+1,4);
      

  5.   

    更正为:
    showmessage(copy('abc-defg',length('abc-defg')-4+1,4));
      

  6.   


    TempVar:=copy('abcdefg',3,2);---> TempVar='cd'
      

  7.   

    我这有一个例子,我试验成功了,对你可能有帮助。
    调用以下函数的方法是:假如删除“abcdef”中的“c”或“cd”Edit1.Text := FilterSpecialString('abcdef','c');  //Edit1.Text='abdef';Edit1.Text := FilterSpecialString('abcdef','cd'); //Edit1.Text='abef';Function TForm1.FilterSpecialString(OriginString, SpecialString: String): String;Vari,j : Integer;fromSit,ToSit : Integer; //源字符串的位置ResultString : String;  //返回结果字符串OriginStrLength, SpecialStrLength : Integer; //源字符串和特殊字符串的长度Begin result := ''; If (SpecialString = '') Or (Length(SpecialString) > Length(OriginString)) Then Begin Result := OriginString; Exit; end; ResultString := ''; j := 1; i := 1; FromSit := 1;  OriginStrLength := Length(OriginString);  SpecialStrLength := Length(SpecialString);  While(i <= OriginStrLength) Do  BeginIf OriginString[i] = SpecialString[j] Then    Begin      If j = SpecialStrLength Then       Begin        ToSit := i;        ResultString := ResultString + Copy(OriginString,FromSit,ToSit - SpecialStrLength - FromSit + 1);        FromSit := i + 1;        j := 1;      End      Else        j := j + 1;    End    Else     Begin      If j <> 1 Then i := i - j + 1;      j := 1;    End;    i := i + 1;  End;  ResultString := ResultString + Copy(OriginString,FromSit,OriginStrLength - FromSit + 1);  Result := ResultString;end;