新人求助,计算类程序数值大后卡死?
各位前辈高手,写了个数值计算程序,发现输入的数值过大就会出错或程序卡死,请问是什么原因?(见附件程序及源码)
附上源码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Label3: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Num:Array of Integer;
sl,s,i,max,max_i:Integer;
begin
sl:=StrToInt(Edit2.text);
s:=StrToInt(Edit1.Text);
SetLength(Num,sl);
For i:=1 to sl do
begin
Edit4.Text:=Edit4.Text+IntToStr(s)+',';
Num:=s;
s:=s+1;
While( Pos(Edit3.Text,IntToStr(s)) >0 ) do //Pos:取出子串在父串中第一次出现的位置
begin
s:=s+1;
end;
While( Pos(Edit7.Text,IntToStr(s)) >0 ) do //Pos:取出子串在父串中第一次出现的位置
begin
s:=s+1;
end;
end;
max:=Num;
max_i:=1;
For i:=2 to sl do
begin
If (max < Num) then
begin
max:=Num;
max_i:=i;
end;
Edit5.Text:=IntToStr(max);
Edit6.Text:=IntToStr(max_i);
end;
end;
end. 是不是数值大小有限制 新手·ing 发表于 2017-3-3 21:10
是不是数值大小有限制
试过把变量基类Integer换成LongInt,Int64,结果还是一样! 写法不对 调试看看 While( Pos(Edit3.Text,IntToStr(s)) >0 ) do //Pos:取出子串在父串中第一次出现的位置
begin
s:=s+1;
end;
两个while语句, 改成if。 用循环语句,又不设置跳出的条件,无限循环
页:
[1]