救命的问题!急!急!急!急!急!急!急!

yuwenshen 2007-07-31 09:49:41
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, FR_Class, StdCtrls, FR_DSet, FR_DBSet, FR_BarC,
ExtCtrls, ComCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
frReport1: TfrReport;
Button2: TButton;
Button3: TButton;
Edit4: TEdit;
Edit5: TEdit;
Label6: TLabel;
Label5: TLabel;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
DateTimePicker1: TDateTimePicker;
Label2: TLabel;
Edit1: TEdit;
Label1: TLabel;
Timer1: TTimer;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit5Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
procedure Load_S(Sender: TObject);

public
{ Public declarations }
I_T:Integer;
I_num,I_pri:LongInt;
B_bj:Boolean;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Load_S(Sender: TObject);
var
S_str:string;
begin
S_str:=Edit2.Text+Edit3.Text+Edit4.Text;
{if I_pri<10000 then
begin
frReport1.FindObject('memo1').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo2').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo4').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo5').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo7').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo8').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo10').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo11').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo13').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo14').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo16').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo17').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo19').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo20').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo22').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo23').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo25').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo26').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo28').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo29').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo31').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo32').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end;
if I_pri<10000 then
begin
frReport1.FindObject('memo34').Memo.Text:=Edit1.Text;
frReport1.FindObject('memo35').Memo.Text:=DateToStr(DateTimePicker1.DateTime);
end; }
I_num:=StrToInt(copy(trim(Edit5.Text),6,4));
{
if I_pri<10000 then frReport1.FindObject('memo3').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num]);
if I_pri<10000 then frReport1.FindObject('memo6').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+1]);
if I_pri<10000 then frReport1.FindObject('memo9').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+2]);
if I_pri<10000 then frReport1.FindObject('memo12').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+3]);
if I_pri<10000 then frReport1.FindObject('memo15').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+4]);
if I_pri<10000 then frReport1.FindObject('memo18').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+5]);
if I_pri<10000 then frReport1.FindObject('memo21').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+5]);
if I_pri<10000 then frReport1.FindObject('memo24').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+7]);
if I_pri<10000 then frReport1.FindObject('memo27').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+8]);
if I_pri<10000 then frReport1.FindObject('memo30').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+9]);
if I_pri<10000 then frReport1.FindObject('memo33').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+10]);
if I_pri<10000 then frReport1.FindObject('memo36').Memo.Text:=S_str+copy(trim(Edit5.Text),0,6)+format('%.4d',[I_num+11]);
frReport1.PrepareReport;
frReport1.PrintPreparedReport('', 1, True, frAll); }
//frReport1.PrintPreparedReportDlg;
I_pri:=I_num+12;//此处I_num大于4621就溢出
Edit5.Text:=copy(trim(Edit5.Text),0,5)+format('%.4d',[I_num+12]);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.caption='打印' then
begin
B_bj:=true;
Button1.Caption:='暂停';
Timer1.Enabled:=true;
Load_S(Sender); //开始打印
end
else
begin
B_bj:=false;
Button1.Caption:='打印';
Timer1.Enabled:=false;
end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

procedure TForm1.DateTimePicker1Change(Sender: TObject);
var
Year, Month, Day:Word;
begin
decodedate(DateTimePicker1.DateTime,Year, Month, Day);
if Month <9 then
Edit4.Text:= copy(IntToStr(Year),3,2)+'0'+IntToStr(Month)+IntToStr(Day)
else
Edit4.Text:= copy(IntToStr(Year),3,2)+IntToStr(Month)+IntToStr(Day);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
DateTimePicker1Change(Sender);
B_bj:=true;
I_T:=0;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
B_bj:=false;
//showmessage(copy(trim(Edit5.Text),0,5)+format('%.4d',[12]));
end;

procedure TForm1.Edit5Change(Sender: TObject);
begin
try
if I_pri<10000 then
if B_bj=true then Load_S(Sender);
except
exit;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin
I_T:=I_T+1;
Label7.Caption:='打印已经进行了'+IntToStr(I_T)+'秒';
end;

end.
上面是我的小程序,
...全文
146 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsmserver 2007-07-31
  • 打赏
  • 举报
回复
溢出了
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
I_pri:=I_num+12;//断点跟踪到这里的时候你看看I_num 及I_pri的值是多少
smallBridge 2007-07-31
  • 打赏
  • 举报
回复
var
S_str:string;
begin
S_str:=Edit2.Text+Edit3.Text+Edit4.Text;
Showmessage(S_str); //看看是什么

I_num:=StrToInt(copy(trim(Edit5.Text),6,4));
Showmessage(copy(trim(Edit5.Text),6,4)); //看看是什么

I_pri:=I_num+12;//此处I_num大于4621就溢出
Edit5.Text:=copy(trim(Edit5.Text),0,5)+format('%.4d',[I_num+12]);
yuwenshen 2007-07-31
  • 打赏
  • 举报
回复
来个高手救命啊!
yuwenshen 2007-07-31
  • 打赏
  • 举报
回复
就是有注释的那一行。
错误提示:
Project Project1.exe raised exception class EStackOverflow with message'Stack Overflow'. Process Stopped Use Step or Run to continue
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
把错误的提示也粘贴出来
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
你断点调试一下 看看那行出错了
yuwenshen 2007-07-31
  • 打赏
  • 举报
回复
我的新测试程序:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit5: TEdit;
procedure Button1Click(Sender: TObject);
procedure Load_S(Sender: TObject);
procedure Edit5Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
I_T:Integer;
I_num,I_pri:LongInt;
B_bj:Boolean;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Load_S(Sender: TObject);

begin
I_num:=StrToInt(copy(trim(Edit5.Text),6,4));

I_pri:=I_num+12;//还是这里当改为I_num+50就没有问题
Edit5.Text:=copy(trim(Edit5.Text),0,5)+format('%.4d',[I_num+12]);

end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.caption='打印' then
begin
B_bj:=true;
Button1.Caption:='暂停';
Load_S(Sender); //开始打印
end
else
begin
B_bj:=false;
Button1.Caption:='打印';
end;
end;

procedure TForm1.Edit5Change(Sender: TObject);
begin
if I_pri<10000 then
if B_bj=true then Load_S(Sender);
end;

end.
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
溢出?



var
S_str:string;
begin
S_str:=Edit2.Text+Edit3.Text+Edit4.Text;
I_num:=StrToInt(copy(trim(Edit5.Text),6,4)); -- 是不是你这里出了问题?
I_pri:=I_num+12;//此处I_num大于4621就溢出
Edit5.Text:=copy(trim(Edit5.Text),0,5)+format('%.4d',[I_num+12]);
yuwenshen 2007-07-31
  • 打赏
  • 举报
回复
我这段代码的意思是——在Edit控件的Change事件中将一个公共变量赋值。同时将该Edit控件的值改为公共变量的值。当该值大于10000的时候停止执行。可是这个整型的公共变量增长到4700的时候就溢出了,所以很郁闷。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧