var
  Codes:array[0..2] of Byte;
  kuadu:array of Byte;
   bMax,bMin:Byte;
   str:string;
   i,j,s: integer;begin
   SetLength(kuadu,(FCurveList.Count-1));  //////FCurveList:TStringList;无错
    kuadu[j]:=0;
  for j:=FCurveList.Count-1 downto 0 do
   begin
   str:=Copy(FCurveList[j],7,3);   //////FCurveList:TStringList;无错
   Codes[0]:=Ord(str[1]);
   Codes[1]:=Ord(str[2]);
   Codes[2]:=Ord(str[3]);
   bMax:=Codes[0]; 
   bMin:=Codes[0];
   for s:=1 to 2 do
   begin
       bMax:=Max(bMax, Codes[s]);
       bMin:=Min(bMin,Codes[s]);
   end;
   kuadu[j]:=bMax-bMin;
    showmessage(inttostr(kuadu[j]));
   end;
说明:求kuadu[j]时,显示invalid pointer operation错误

解决方案 »

  1.   

       SetLength(kuadu,(FCurveList.Count-1));  //////FCurveList:TStringList;无错 
        kuadu[j]:=0; --------------------->这个去掉
      

  2.   

    kuadu[j]:=bMax-bMin;               //j的值为-1
    showmessage(inttostr(kuadu[j])); 
      

  3.   

     SetLength(kuadu,(FCurveList.Count-1));  //////FCurveList:TStringList;无错 实际有错,呵呵,我原来以为无错,应为SetLength(kuadu,FCurveList.Count);