当前位置:主页>销售管理软件> 列表

程序出现"Stack Overflow"怎么办? 找用友财务软件破解版

销售管理软件版1楼: 我的程序具体是这样的,
首先一个主窗体,里面嵌入一个子窗体,子窗体里头有个image,
这时我要做的操作是image中鼠标点击时计算一个数值,计算用到的函数
在另外一个文件中已经定义好了,而计算时需要用到主窗体对象的数据,
我把主窗体的数据已经设置为public了,此程序一旦运行到在image窗口
点击单步执行到计算函数时就跳出stack overflow出错,怎么办?
谢谢。

2楼: 我定义了一个数据结构和一个子结构。
在运行时也遇到了同样的问题。 如用友财务软件破解版

3楼: stack overflow是堆栈溢错误!
是不是出现了死循环...导致堆栈溢出了?
贴出计算代码来看看???

4楼: 不是死循环,用到的函数还没运行就出现这个了呢。
后来我改了代码可以了,是不是每个function设定的变量
不能太多啊?变量多了需要用到的堆栈也多?

5楼: 会不是变量有同名现象?
我也认为是死循环,可能是潜在的。

6楼: 点project->options菜单,选Linker,在Memory size部分中,把Min stack size从$00004000改成$00040000,把Max stack size从$00100000改成$01000000,点OK就行了。不会出现堆栈溢出的问题了。

销售管理软件版7楼: >>变量多了需要用到的堆栈也多?
对,因为所有参数要通过压栈才能进入函数体内,而且通常,参数是按照拷贝的方式压栈的,对于shortstring或者string或者定长的array等类型,建议在声明的时候加上const或者var,这样将避免压栈的时候对参数进行拷贝。

8楼: 改大了就填不满? 还没试过。

9楼: >>变量多了需要用到的堆栈也多?
对,因为所有参数要通过压栈才能进入函数体内,而且通常,参数是按照拷贝的方式压栈的,对于shortstring或者string或者定长的array等类型,建议在声明的时候加上const或者var,这样将避免压栈的时候对参数进行拷贝。

10楼: 这是我定义的结构。
type
Table1=record
LINK11:Integer;
INT11:Integer;
end;
type
Table2=record
LINK12:Integer;
INT12:Integer;
end;
type
Table3=record
LINK13:Integer;
INT13:Integer;
end;
type
Table4=record
LINK14:Integer;
INT14:Integer;
end;
type
Table5=record
LINK21:Integer;
INT21:Integer;
end;
type
Table6=record
LINK22:Integer;
INT22:Integer;
end;
type
Table7=record
LINK23:Integer;
INT23:Integer;
end;
type
Table8=record
LINK24:Integer;
INT24:Integer;
end;
type
Table=record
ID:Integer;
NAME:String;
TAG:Integer;
EVENT:Integer;
BRANCH1:Integer;
JOINT11:Array of Table1;
JOINT12:Array[0..200] of Table2;
JOINT13:Array[0..200] of Table3;
JOINT14:Array[0..200] of Table4;
{JOINT11:Integer;
JOINT12:Integer;
JOINT13:Integer;
JOINT14:Integer;}
BRANCH2:Integer;
JOINT21:Array[0..200] of Table5;
JOINT22:Array[0..200] of Table6;
JOINT23:Array[0..200] of Table7;
JOINT24:Array[0..200] of Table8;
{JOINT21:Integer;
JOINT22:Integer;
JOINT23:Integer;
JOINT24:Integer;}
STATE:Integer;
POINT1:Tpoint;
POINT2:Tpoint;
end;

var
Array1:Array[0..200] of Table;

11楼: 谢谢