解决方案 »

  1.   

    股票代码就这么点,直接一个list 保存不就完了, 
      

  2.   

    hash表吧。比如求余数什么的。
      

  3.   

    我用的这个转换,注意指数代码不同行情软件可能不一样
    Const
      piSZCodeMax      = 5000;   //000001-005000
      piCYCodeMax      = 3000;   //300001-303000
      piSHCodeMax      = 5000;   //600000-605000
      //piZSCodeMax      = 1000;   //880000-881000  //板块指数
      piCodeBufCount   = piSZCodeMax + piCYCodeMax + piSHCodeMax + {piZSCodeMax + }3;
    Function CodeToBufIndex(Code : integer; var Index : Integer) : Boolean;
    begin
      Result := True;
      if (Code>=1) and (Code<=piSZCodeMax) then Index := Code
      else if (Code>=300001) and (Code<300000+piCYCodeMax) then Index := piSZCodeMax + Code - 300000
      else if (Code>=600000) and (Code<600000+piSHCodeMax) then Index := piSZCodeMax + piCYCodeMax + Code - 600000
      //else if (Code>=880000) and (Code<880000+piZSCodeMax) then Index := piSZCodeMax + piCYCodeMax + piSHCodeMax + Code - 880000
      else if Code=999999 then Index := piCodeBufCount-1
      else if Code=399001 then Index := piCodeBufCount-2
      else if Code=399006 then Index := piCodeBufCount-3
      else Result := False;
    end;Function BufIndexToCode(Index : integer; var Code : Integer) : Boolean;
    begin
      Result := True;
      if Index<=0 then Result := False
      else if (Index<=piSZCodeMax) then Code := Index
      else if (Index<piSZCodeMax+piCYCodeMax) then Code := Index + 300000 - piSZCodeMax
      else if (Index<piSZCodeMax+piCYCodeMax+piSHCodeMax) then Code := Index + 600000-piSZCodeMax-piCYCodeMax
      //else if (Index<piSZCodeMax+piCYCodeMax+piSHCodeMax+piZSCodeMax) then Code := Index + 880000 - piSZCodeMax - piCYCodeMax - piSHCodeMax
      else if (Index=piCodeBufCount-1) then Code := 999999
      else if (Index=piCodeBufCount-2) then Code := 399001
      else if (Index=piCodeBufCount-3) then Code := 399006
      else Result := False;
    end;