全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:917
推到 Plurk!
推到 Facebook!

代码的优化问题

答題得分者是:cashxin2002
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-28 20:51:07 IP:222.184.xxx.xxx 未訂閱
一段代码如下:  
 
begin
if not (key in['0'..'9',#13,#8,#46,#45]) then
begin
key:=#0;
MessageBeep(1);
Application.MessageBox('请输入数字','提示',MB_OK);
end;
if (Edit8.Text='') and (key=#13) then
begin
Application.MessageBox('请输入数字','提示',MB_OK);
end
else
begin
if key=#13 then
begin
if (zl='药品项目') and (kcsl-strtofloat(edit8.Text)<=0) then
begin
if MessageDlg('确定添加吗?',mtConfirmation,[mbYes,mbno],0)= mrYes then
begin
ADOTable2.Last;
ADOTable2.Insert;
ADOTable2.FieldByName('id').AsInteger:=strtoint(zdbh);
ADOTable2.FieldByName('项目类型').AsString :=label22.Caption;
ADOTable2.FieldByName('项目名称').AsString := Edit5.Text;
ADOTable2.FieldByName('单价').AsString := Edit6.Text;
ADOTable2.FieldByName('规格').AsString := Edit7.Text;
ADOTable2.FieldByName('数量').AsString := Edit8.Text;
ADOTable2.FieldByName('单项累计').Asstring :=format('%.2f',[ StrToFloat(Edit6.Text)*StrToFloat(Edit8.Text)]);
ADOTable2.Post;
end;
end
else
begin
ADOTable2.Last;
ADOTable2.Insert;
ADOTable2.FieldByName('id').AsInteger:=strtoint(zdbh);
ADOTable2.FieldByName('项目类型').AsString :=label22.Caption;
ADOTable2.FieldByName('项目名称').AsString := Edit5.Text;
ADOTable2.FieldByName('单价').AsString := Edit6.Text;
ADOTable2.FieldByName('规格').AsString := Edit7.Text;
ADOTable2.FieldByName('数量').AsString := Edit8.Text;
ADOTable2.FieldByName('单项累计').Asstring :=format('%.2f',[ StrToFloat(Edit6.Text)*StrToFloat(Edit8.Text)]);
ADOTable2.Post;
end;
end;
end;
end;    
这段代码如何优化一下呢 我的起步始于ktop,我将永远支持ktop。
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-29 09:31:35 IP:202.62.xxx.xxx 未訂閱
您好﹗
begin
  if Not (key in ['0'..'9',#13,#8,#46,#45]) then
    begin
      key := #0;
    end
  else
  if (Edit8.Text = '') and (key = #13) then
    begin
      Application.MessageBox('请输入数字','提示',MB_OK);
    end
  else
    begin
      if (zl = '药品项目') and (kcsl-strtofloat(edit8.Text)<=0) then
        begin
          if MessageDlg('确定添加吗?',mtConfirmation,[mbYes,mbno],0)= mrYes then
            begin
              ADOTable2.Insert;
              ADOTable2.FieldByName('id').AsInteger:=strtoint(zdbh);
              ADOTable2.FieldByName('项目类型').AsString :=label22.Caption;
              ADOTable2.FieldByName('项目名称').AsString := Edit5.Text;
              ADOTable2.FieldByName('单价').AsString := Edit6.Text;
              ADOTable2.FieldByName('规格').AsString := Edit7.Text;
              ADOTable2.FieldByName('数量').AsString := Edit8.Text;
              ADOTable2.FieldByName('单项累计').Asstring :=format('%.2f',[ StrToFloat(Edit6.Text)*StrToFloat(Edit8.Text)]);
              ADOTable2.Post;
            end;
        end;
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-29 12:18:09 IP:222.184.xxx.xxx 未訂閱
前辈,代码可能和我的要求有一点不同,我的意思如下: 如果 if (zl = '药品项目') and (kcsl-strtofloat(edit8.Text)<=0) then 那么提问,如果回答是,则执行adotable2.last到adotable2.post那一段代码。如果回答否,则不执行。 如果 not if (zl = '药品项目') and (kcsl-strtofloat(edit8.Text)<=0) then 那么问也不要问就直接执行adotable2.last到adotable2.post那一段代码。 说的具体的话就是zl='检查项目'时那么就不问了,直接执行,等于药品项目时先查查库存数量,够的话就执行,不够的话问问是否仍然添加收费项目。 我的起步始于ktop,我将永远支持ktop。
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-29 14:52:48 IP:202.62.xxx.xxx 未訂閱
您好﹗
begin
  if Not (key in ['0'..'9',#13,#8,#46,#45]) then
    begin
      key := #0;
    end
  else
  if (Edit8.Text = '') and (key = #13) then
    begin
      Application.MessageBox('请输入数字','提示',MB_OK);
    end
  else
    begin
      if (zl = '药品项目') and (kcsl-strtofloat(edit8.Text)<=0) then
        begin
          if MessageDlg('确定添加吗?',mtConfirmation,[mbYes,mbno],0)= mrYes then
            begin
              ADOTable2.Insert;
              ADOTable2.FieldByName('id').AsInteger:=strtoint(zdbh);
              ADOTable2.FieldByName('项目类型').AsString :=label22.Caption;
              ADOTable2.FieldByName('项目名称').AsString := Edit5.Text;
              ADOTable2.FieldByName('单价').AsString := Edit6.Text;
              ADOTable2.FieldByName('规格').AsString := Edit7.Text;
              ADOTable2.FieldByName('数量').AsString := Edit8.Text;
              ADOTable2.FieldByName('单项累计').Asstring :=format('%.2f',[ StrToFloat(Edit6.Text)*StrToFloat(Edit8.Text)]);
              ADOTable2.Post;
            end;
        end
      else
      if (zl = '检查项目') and (kcsl-strtofloat(edit8.Text)<=0) then
        begin
          ADOTable2.Insert;
          ADOTable2.FieldByName('id').AsInteger:=strtoint(zdbh);
          ADOTable2.FieldByName('项目类型').AsString :=label22.Caption;
          ADOTable2.FieldByName('项目名称').AsString := Edit5.Text;
          ADOTable2.FieldByName('单价').AsString := Edit6.Text;
          ADOTable2.FieldByName('规格').AsString := Edit7.Text;
          ADOTable2.FieldByName('数量').AsString := Edit8.Text;
          ADOTable2.FieldByName('单项累计').Asstring :=format('%.2f',[ StrToFloat(Edit6.Text)*StrToFloat(Edit8.Text)]);
          ADOTable2.Post;
        end;
    end;
end;
若需再簡化一些﹐就把ADOTable2新增儲存那段Code寫成單獨的程序Procedure﹐然后分別替換在以上兩段紅色程式碼處﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/11/29 15:09:59
------
忻晟
系統時間:2024-11-25 2:47:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!