s0:='2002-4-13 : 11:32:11--11:32:01';s1:=Copy(s0,0,Pos(':',s0)-1);
s2:=Copy(s0,Pos('--',s0)-8,8);
s3:=Copy(s0,Pos('--',s0)+2,8);我已经调试通过了!!

解决方案 »

  1.   

    var
      s1,s2,s3,Str,TempStr:String;
    begin
      Str:='2002-4-13:11:32:11--11:32:01' ;
      s1:=Copy(Str,1,Pos(':',Str)-1);
      TempStr:=Copy(Str,Pos(':',Str)+1,Length(Str)-Pos(':',Str));
      s2:=Copy(TempStr,1,Pos('-',TempStr)-1);
      s3:=Copy(TempStr,Pos('-',TempStr)+2,Length(TempStr)-Pos('-',TempStr)-1);
      Showmessage(s1);
      Showmessage(s2);
      Showmessage(s3);
    end;
    //其中TempStr可以不定义,用其它的String变量来代替,不过为了表示他的
    //作用,还是再定义一个吧
      

  2.   

    取到空格也不怕! 用Trim()
      

  3.   

    var
      s: string;
      s0, s1, s2: string;
      iPos: Integer;
    begin
      s := '2002-4-13 : 11:32:11--11:32:01';
      iPos := Pos(':', s);
      s0 := Copy(s, 0, iPos - 1);//2002-4-13 
      Delete(s, 1, iPos);  iPos := Pos('--', s);
      s1 := Copy(s, 0, iPos - 1);//11:32:11
      Delete(s, 1, iPos + 1);  s2 := s;//11:32:01
    end;
      

  4.   

    function GetString( p: PChar; sDelimiter: Char; var sRet: String): PChar;
    var q: PChar;
    begin
      while ( Assigned(p) and (p^ <> #0) and ( p^ < #32) ) do
        Inc(p);
      q := p;  while ( Assigned(p) and (p^ <> #0) and not ( (p^ < #32) or (p^ = sDelimiter)) ) do
        Inc(p);  sRet := Trim(Copy(q,1,p-q));  if ( Assigned(p) and (p^ <> #0) and  ( p^ = sDelimiter ) ) then
       Inc(p);  Result :=  p;
    end;var p: PChar;
    begin
      p := PChar(GUIDStr);
      p := GetString(p,':',FirstS);
      p := GetString(p,'-',SecondS);
      p := GetString(p,'-',NullS);
      p := GetString(p,#13,ThirdS);
      ......
    end;
      

  5.   

    See also
    http://www.csdn.net/expert/topic/616/616697.xml?temp=.3258631