答案一:TStringList越界
答案二:Random函数越界
答案三:TADOQuery越界
正确答案是。:)

解决方案 »

  1.   

    是不是arrayQes , arrayAns变体变量声明为数组时出问题了,以至后面赋值出错
    //arrayQes := VarArrayCreate([0,QesAmount -1],varString);
    //arrayAns := VarArrayCreate([0,QesAmount -1],varString);
    但你在程序里已经注释掉了,能不能缩小你的出错范围,最好分步调试,指明哪里出错
      

  2.   

    QesBag.Delete(i);
    ???
    能不越界吗?================================================================
    一颗红心向前看,为了革命两茫然,不好意思才囊尽,只能说上一点点。
    ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
    ★    我踢  我踢   我踢  我踢  我踢  我踢  我踢  我踢  我踢   ★
    ★    你UP  你UP   你UP  你UP  你UP  你UP  你UP  你UP  你UP   ★
    ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
    ================================================================
      

  3.   

    to: njbudong(南京不懂) (
    可是我每次循环都重新取长度的啊,不信?look!
    len := QesBag.Count;
    j := Random(len);
      

  4.   

    to: njbudong(南京不懂) (
    可是我每次循环都重新取长度的啊,不信?look!
    len := QesBag.Count;
    j := Random(len);
      

  5.   

    to: njbudong(南京不懂) (
    可是我每次循环都重新取长度的啊,不信?look!
    len := QesBag.Count;
    j := Random(len);
      

  6.   

    to: njbudong(南京不懂) (
    可是我每次循环都重新取长度的啊,不信?look!
    len := QesBag.Count;
    j := Random(len);
      

  7.   

    这段代码好象有问题:
        for i := 0 to QesAmount - 1 do
        begin
           qryMain.Close;
           len := QesBag.Count;
           j := Random(len);
           qryMain.Parameters.ParamValues['pCWN'] := QesBag[j]; //使用题目编号查找题目
           qryMain.Open;
           cdsExam.AppendData(cdsStudy.Data,False);
           //arrayQes[i] := qryMain.FieldByName('problemContent').AsString;
           //arrayAns[i] := qryMain.FieldByName('AnswerContent').AsString;
           QesBag.Delete(i);
           qryMain.Close;
        end;
    另外开你的数据库写入时有没有越界的问题!
      

  8.   


        for i := 0 to QesAmount - 1 do
        begin
           qryMain.Close;
           len := QesBag.Count;
           j := Random(len);
           qryMain.Parameters.ParamValues['pCWN'] := QesBag[j]; //使用题目编号查找题目
           qryMain.Open;
           cdsExam.AppendData(cdsStudy.Data,False);
           //arrayQes[i] := qryMain.FieldByName('problemContent').AsString;
           //arrayAns[i] := qryMain.FieldByName('AnswerContent').AsString;
           QesBag.Delete(i);  //if i>qesBag.count 就会出错
           qryMain.Close;  
        end;
      

  9.   

    是这里过不去
    qryMain.Parameters.ParamValues['pCWN'] := QesBag[j]; //使用题目编号查找题目
    呵呵~~~,请问大家应该怎么解决呢?
      

  10.   

    去掉QesBag.Delete(i);
    ================================================================
    一颗红心向前看,为了革命两茫然,不好意思才囊尽,只能说上一点点。
    ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
    ★    我踢  我踢   我踢  我踢  我踢  我踢  我踢  我踢  我踢   ★
    ★    你UP  你UP   你UP  你UP  你UP  你UP  你UP  你UP  你UP   ★
    ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
    ================================================================