关于有条件的循环的错误问题 |
答題得分者是:tuga
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
原来的写法,CPU占有率太高。想换个新方法来,但是却老是不行。是不是语句的位置放错了?
[code delphi] begin // form1.AdjustToken ; Found := False; form1.ClientDataSet2.DisableControls; try form1.clientdataset2.edit; form1.ClientDataSet2.First; while (not form1.ClientDataSet2.Eof) and (not Found) do begin if ((form1.ClientDataSet2.FieldByName('xx').asstring='') and (FormatDateTime('hh:mm:ss',form1.ClientDataSet2.FieldByName('开始时间').asdatetime) = formatdatetime('hh:mm:ss',now))) or ((form1.ClientDataSet2.FieldByName('xx').asstring<>'') and (FormatDateTime('dddd',now)=form1.ClientDataSet2.FieldByName('周期').asstring) and (FormatDateTime('hh:mm:ss',form1.ClientDataSet2.FieldByName('开始时间').asdatetime) = formatdatetime('hh:mm:ss',now))) then begin ........ [/code] 关于条件的筛选,我用了 if form1.ClientDataSet2.FieldByName('计划类型').AsString <>'' then, begin //这句放哪里呢?我放在while 内部和外部,他们都会死循环。直到死机,什么原因啊
------
断断续续的学了几年,还是一个初学者,永远支持Delphi ! |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
tuga
高階會員 發表:16 回覆:109 積分:120 註冊:2002-07-13 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
procedure Day var Found: Boolean; begin Found := False; form1.ClientDataSet2.DisableControls; try form1.clientdataset2.edit; form1.ClientDataSet2.First; while (not form1.ClientDataSet2.Eof) and (not Found) do begin if ((form1.ClientDataSet2.FieldByName('周期').asstring='') and (FormatDateTime('hh:mm:ss',form1.ClientDataSet2.FieldByName('开始时间').asdatetime) = formatdatetime('hh:mm:ss',now))) then begin Found := True; .... end; form1.ClientDataSet2.Next; end; finally form1.ClientDataSet2.EnableControls; end; 这个过程没问题,但是CPU占有率太高,我想在添加一个循环条件。if clientdataset1.fieldbyname('xx').asstring<>'', 就是不知道应该把这条语句添加在哪里
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
編輯記錄
|
tuga
高階會員 發表:16 回覆:109 積分:120 註冊:2002-07-13 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
有一點疑問,
formatdatetime('hh:mm:ss',now 你使用了這段做為判斷, 但 now 是一個隨時在變化的時間變數, 我不知道右側你要判斷的是什麼"週期時間", 可是找的直覺是, 使用now 能比對出令 found:= True 旳結果嗎? 死機的原因是否是這裡? ===================引 用 zhouying82 文 章=================== procedure Day var Found: Boolean; begin Found := False; form1.ClientDataSet2.DisableControls; try form1.clientdataset2.edit; form1.ClientDataSet2.First; while (not form1.ClientDataSet2.Eof) and (not Found) do begin if ((form1.ClientDataSet2.FieldByName('周期').asstring='') and (FormatDateTime('hh:mm:ss',form1.ClientDataSet2.FieldByName('开始时间').asdatetime) = formatdatetime('hh:mm:ss',now))) then begin Found := True; .... end; form1.ClientDataSet2.Next; end; finally form1.ClientDataSet2.EnableControls; end; 这个过程没问题,但是CPU占有率太高,我想在添加一个循环条件。if clientdataset1.fieldbyname('xx').asstring<>'', 就是不知道应该把这条语句添加在哪里 |
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
tuga
高階會員 發表:16 回覆:109 積分:120 註冊:2002-07-13 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
tuga
高階會員 發表:16 回覆:109 積分:120 註冊:2002-07-13 發送簡訊給我 |
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
|
tuga
高階會員 發表:16 回覆:109 積分:120 註冊:2002-07-13 發送簡訊給我 |
procedure log_it(strMessage:string);
var hErrorLog:TextFile; strLogFileName:String; begin strLogFileName:=ExtractFilePath(Application.ExeName) formatdatetime('yyyymmdd',now) '.txt'; if not FileExists(strLogFileName) then begin AssignFile(hErrorLog,strLogFileName); ReWrite(hErrorLog); WriteLn(hErrorLog,'Start Here'); CloseFile(hErrorLog); end; AssignFile(hErrorLog,strLogFileName); Append(hErrorLog); WriteLn(hErrorLog,DateTimeToStr(Now) ',' strMessage); CloseFile(hErrorLog); end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |