不能执行,为什么? |
尚未結案
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
average:string;
begin
label1.Caption:=formatdatetime('YYYY"年"M"月"D"日" dddd' ' hh:mm:ss AM/PM',now);
label2.Caption:=timetostr(now);
i:=1;
for i:=1 to stringgrid1.RowCount do
if label2.Caption=stringgrid1.Rows[i].Text ':00' then
begin
adoquery1.Active:=true;
adoquery2.Active:=true;
average:=formatfloat('0.00',strtofloat(adoquery2.fieldbyname('amount').asstring)/strtofloat(adoquery1.fieldbyname('cust_qty').asstring));
filepath:=ExtractFilepath(Application.Exename) 'sales.ini';
myinifile:=Tinifile.create(filepath);
myinifile.WriteString(stringgrid1.rows[i].Text,'sales_tot',adoquery2.fieldbyname('amount').asstring);
myinifile.WriteString(stringgrid1.rows[i].Text,'cust_qty',adoquery1.fieldbyname('cust_qty').asstring);
myinifile.WriteString(stringgrid1.rows[i].Text,'average',average);
stringgrid1.Cells[i,1]:=myinifile.ReadString(stringgrid1.rows[i].text,'sales_tot','');
stringgrid1.Cells[i,2]:=myinifile.ReadString(stringgrid1.rows[i].text,'cust_qty','');
stringgrid1.Cells[i,3]:=myinifile.ReadString(stringgrid1.rows[i].text,'average','');
myinifile.free;
adoquery1.Active:=false;
adoquery2.Active:=false;
end;
end; 我的stringgrid1.rows的值为
8:00 9:00 10:00 至22:00
我是想让程序每一小时运行两个adoquery的查询,将结果保存至sales.ini文件中,
stringgrid再从ini 文件中读数据!可是我样写不能执行,为什么?哪错了?
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
Have you ever enable the timer? BTW, you cannot guarantee the timer event got triggered at hh:nn:00 (i.e. sharp at second=0) and hence I guess this is your main problem class="code">if Now>=TriggerTime then begin
Timer1.Enabled := False; // you don't want to be interrupted, do you?
TriggerTime := TriggerTime TimeInterval;
try
{....}
finally
Timer1.Enabled := True;
end;
end;
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
{...}
DecodeTime(Now,hh,nn,ss);
if Format('%d:%.2d',[hh,nn])=stringgrid1.Rows[i].Text then
{...} Above should work fine in your case if your timer get triggered at least once a minute, but there is no handling of missing event and NO check for processed event.
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
for i:=1 to stringgrid1.RowCount do
begin
filepath:=ExtractFilepath(Application.Exename) 'sales.ini';
myinifile:=Tinifile.create(filepath);
stringgrid1.Cells[1,i]:=myinifile.ReadString(trim(stringgrid1.rows[i].text),'sales_tot','');
stringgrid1.Cells[2,i]:=myinifile.ReadString(trim(stringgrid1.rows[i].text),'cust_qty','');
stringgrid1.Cells[3,i]:=myinifile.ReadString(trim(stringgrid1.rows[i].text),'average','');
myinifile.free;
end;
我的stringgrid共有三列,我用以上的代码显示,不知为何每按一次,
只能显示一列,按第二次时,第一次又不显示了,再显示第二列,
再按一次,第二列又不显示了,显示第三列,帮帮我,看看吧!
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
andy_qin
一般會員 發表:41 回覆:51 積分:18 註冊:2003-03-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |