这个函数主要实现如下功能:
TJ := 001~120        
同时,条件(TJ)允许使用“|”来隔开多个条件,001~120|200~300|350
  
Belong(TJ,BM)
判断该BM是否在 TJ范围里面,是的话,返回True,否则返回False。请写出详细的代码,如果方法很妙的话,可以另外开贴给分,我现在分很足,给个几百分没问题的,只是要多开几贴。呵呵。

解决方案 »

  1.   

    BM又是什么樣的如果BM也和TJ相近用POS函數就可以了
      

  2.   

    function Belong(const TJ,BM:String):Boolean;
    var
      Counts,num :Integer;
      FXTJ   : Array of String;
    begin
      Counts := 0;        //多个条件的时候处理
      while Pos('|',TJ)>0 do
        begin
          Counts := Counts + 1;
          SetLength(FXTJ,Counts);
          num    := pos('|',TJ);
          FXTJ[Counts-1] := Copy(TJ,1,num-1);
          TJ :=Copy(TJ,num+1,length(TJ));       
        end;
      Counts := Counts + 1;
      SetLength(FXTJ,Counts);
      FXTJ[Counts-1] := TJ;  ...
      然后再一个个来判断BM是否属于数组FXTJ中的范围,一但满足其中一个,就Result := True;
      数组中的条件要按照数字来处理,就是判断编码(BM)是否在条件给定的编码范围里面。
      Break出来。   end;
      

  3.   

    TO zhouzhouzhou(人生程序) :
    用Pos()肯定不能实现这个功能,这个函数主要是给定一个编码范围条件,然后来判断BM是否属于这个范围。是就返回True,否则返回False。
      

  4.   

    从TJ中取得头尾的值
    然后用集全判断
    eg:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Str,subStr : String;
    begin
    //  Str := '001~120|200~300|350'
    //  if Pos('|',Str) > 0 then
    //  begin
    //    ... 自己写吧
    //  end;
      str := '100';
      if (StrtoInt(Str) in [strtoInt('001')..strtoInt('120')]) then
      showmessage('In');
    end;
      

  5.   

    tglong(Dragon):这个想法,,不错,试试先。
      

  6.   

    function Belong(const TJ,BM:String):Boolean;
    var
      Counts,num,PS :Integer;
      FXTJ   :  String;
    begin
      RESULT:= FALSE ;
      Counts := 0; 
      num := Pos('|',TJ);      
      while num>0 do
        begin           
          FXTJ := Copy(TJ,1,num-1);
          PS:= POS('~',FXTJ);
          TJ :=Copy(TJ,num+1,length(TJ)); 
          if PS>0 THEN
          BEGIN     
            if copmarestr(Copy(FXTJ,1,PS-1),BM)<=0 AND COMPARESTR(COPY(FXTJ,PS+1,NUM-PS-1),BM)>=0 THEN
            begin
              RESULT:= TRUE; 
              EXIT;
            END
          END
          ELSE
            IF COMPARESTR(FXTJ,BM) THEN
            begin
              RESULT:= TRUE; 
              EXIT;
            END;        
          num := pos('|',TJ);
        end;
    END;
      

  7.   

    yurenjf(极限):你这是比较字符串啊?