我循环调用一个自定义函数计算数值然后加入到MSFlexGrid中,有可能要计算上万次,结果出现了“堆栈空间溢出”的问题,请问该如何实现计算几万次呢。

解决方案 »

  1.   

    我的代码如下
    For i = 0 To maxDate
            fx = fsx(i)
            Fy = fsy(i)        Fs = True
            Call pdqx(slc(0), 0, 0)
            If fslc <> "" Then
                MsfgFs.Rows = MsfgFs.Rows + 1
                rowIndex = MsfgFs.Rows - 1
                reOrder (MsfgFs.Object)
                MsfgFs.TextMatrix(rowIndex, 1) = fx
                MsfgFs.TextMatrix(rowIndex, 2) = Fy
                MsfgFs.TextMatrix(rowIndex, 3) = fslc
                MsfgFs.TextMatrix(rowIndex, 4) = fspj
            End If
        Next能不能把上maxDate分成两个小于1000的数字来循环解决呢。
      

  2.   

    就像这样?for i=0 to A
        Function
    next i如果是这样的话,你需要把代码贴出来看看了,不一定是我说的问题,可能
    写的代码里面存在问题,
      

  3.   

    For i = 0 To maxDate 
            fx = fsx(i) 
            Fy = fsy(i)         Fs = True 
            Call pdqx(slc(0), 0, 0) 
            If fslc <> "" Then 
                MsfgFs.Rows = MsfgFs.Rows + 1 
                rowIndex = MsfgFs.Rows - 1 
                reOrder (MsfgFs.Object) 
                MsfgFs.TextMatrix(rowIndex, 1) = fx 
                MsfgFs.TextMatrix(rowIndex, 2) = Fy 
                MsfgFs.TextMatrix(rowIndex, 3) = fslc 
                MsfgFs.TextMatrix(rowIndex, 4) = fspj 
            End If 
        Next 
    =========================================
    问题可能有一个,那就是maxDate数值可能过大
      

  4.   

    用来计算 MsfgFs.TextMatrix(rowIndex, 1) = fx 
                MsfgFs.TextMatrix(rowIndex, 2) = Fy 
                MsfgFs.TextMatrix(rowIndex, 3) = fslc 
                MsfgFs.TextMatrix(rowIndex, 4) = fspj 
    几个数值的
      

  5.   

    Public Sub pdqx(ByVal lc As Double, ByVal jd As Double, ByVal jl As Double)
      

  6.   

    Public Sub pdqx(ByVal lc As Double, ByVal jd As Double, ByVal jl As Double) '计算坐标
        Dim s As Double
        Dim o As Double
        Dim j As Double    Dim tempH As Double
        Dim tempR As Double    Dim t As Double
        Dim z As Double
        Dim tzi As Integer
        Dim cx As Double
        Dim cy As Double
        Dim cJD As Double
        Dim cJL As Double
        Dim fyQxfwj As Double
    ```````````````
    end sub
      

  7.   

    知道了,现在我临时只想到个笨办法你可以试一下写一个函数,函数内容就是你的for循环
    将for循环中maxData进行处理
    dim intGroupTemp as intger      :      intGroupTemp=1000
    GOON:
    if (maxData-intGroupTemp)<1000 then
        function(这是个for循环函数)
        exit function
    else
        function(这是个for循环函数)
        doevents
        maxData=maxData-1000
        goto GOON
    end if 这个办法笨了点,暂时只想出来这个办法,我手写的有写得不规范的地方自己改下
       
      

  8.   

    在pdqx函数内部注意释放应该可以