问题很明显,Delphi肯定不是烂货,你的程序报的都是很低级的错误,好好跟踪吧

解决方案 »

  1.   

    DELPHI能和VC的代码编辑器比吗?!
      

  2.   

    你这么说delphi,你的问题没戏了。~~~~~~
      

  3.   

    你真牛!比谁都牛,这样说delphi
      

  4.   

    小弟不才,刚做了一个网页http://ezym.yeah.net
    专门存我用Delphi开发的作品,请大家赏脸去看看!!
    我只能说kao!你才是个烂货!!
      

  5.   

    to:ykuang
    我看了你的网页,不过,太单调了,怎么都是红色的!
    希望你努力把它办好!因为我们希望看到更多的DELPHI作品!
      

  6.   

    哎呀!这么多人说我,好象脸很红....^_^
    不过凭心而论,DELPHI在语言方面确实没有VC好.
    希望大家能客观地看问题,虽然DELPHI在开发数据库方面有其独特的好处,
    但不能说DELPHI就是最好的!!!
    PB也有很多好处呀!!!!!!!!!!!!!!!!!!!!!
    DELPHI中有许多BUG,又不是我一个人碰到过.
    不过我的标题上的形容,一方面是气愤;另一方面是为了吸引人气.
    只要能达到目的,用什么方法都行.
      

  7.   

    to:ykuang
    我也觉得太红了,好单调!!
    现在又这么热。
      

  8.   

    为什么说delphi在语言方面不如vc?仅仅因为 object pascal 不支持多重继承?仅仅因为 object pascal 不支持算符重载?这些东西在oop领域还是属于争论的范畴,并没有定论谁好谁坏啊如果只是因为你习惯了c++语法,那么你的判断就不是客观的。我们没有说delphi是最好的,同样vc也不是最好的。但delphi是最贴近程序员的,是最“体贴”的开发工具。无论你的水准高低,是开发工具来适应你,而不是让程序员去适应开发工具!比较而言,vb,vc要求程序员去适应开发工具。还有,你说要客观,所以告诉你,delphi的特长并不仅仅在于数据库方面(虽然80%的delphi应用于数据库)。vc能够做到的,delphi同样可以做到。c/c++可以进行sdk开发,delphi也可以(仅仅语法不同而已)!vc有mfc类库,但delphi有更优秀的vcl库。还有,所谓的delphi的bug(有很多这样的贴子),最终都被证明,是程序员自己的问题,所以不要简单的把自己的错误推卸给IDE,出现错误,多数情况都是因为你在某个问题上不清楚。
      

  9.   

    To Nicrosoft:
    那你能推测出以上两种问题可能出现的原因吗?
      

  10.   

    我只负责指出你对delphi认识有缺陷,没有义务给你解决问题。不过,对于第一个问题,可以给你一点提示:可能由于某些窗体尚未被创建(或者尚未可见),而你已经有了设置焦点的代码,不一定是窗口,一般是某个组件(组件也是窗口嘛,玩vc的你应该知道的)。(嘿嘿,和delphi的提示差不多,哈哈)
      

  11.   

    To:Nicrosoft
    拜托,如果这点都不知道的话,不如一头撞死算了.
    但是我的代码中没有这些部分讲了这么多也讲不清楚
    下面是出现问题的两部分的源代码:
    unit main;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ImgList, ComCtrls, ToolWin, Menus, StdCtrls, Buttons, ExtCtrls, DBCtrls,
      Mask, Grids, DBGrids,DBTables;type
      TmainForm = class(TForm)
        MainMenu: TMainMenu;
        menuFile: TMenuItem;
        menuSearch: TMenuItem;
        menuHelp: TMenuItem;
        menuFileExit: TMenuItem;
        menuSearchAE: TMenuItem;
        N2: TMenuItem;
        menuSearchProd: TMenuItem;
        ToolBar1: TToolBar;
        TBNew: TToolButton;
        TBModi: TToolButton;
        TBDel: TToolButton;
        ToolButton4: TToolButton;
        TBFirst: TToolButton;
        TBPrior: TToolButton;
        TBNext: TToolButton;
        TBLast: TToolButton;
        ImageList1: TImageList;
        ToolButton9: TToolButton;
        TBExit: TToolButton;
        Bevel1: TBevel;
        PageCtlAll: TPageControl;
        TabShtAE: TTabSheet;
        TabShtSupp: TTabSheet;
        TabShtVisit: TTabSheet;
        PanelBottom: TPanel;
        OKBtn: TBitBtn;
        CancelBtn: TBitBtn;
        Label1: TLabel;
        DBEdit1: TDBEdit;
        Label2: TLabel;
        DBEdit2: TDBEdit;
        Label3: TLabel;
        DBLookupComboBox1: TDBLookupComboBox;
        Bevel2: TBevel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        DBEdit3: TDBEdit;
        Label7: TLabel;
        DBEdit4: TDBEdit;
        Label8: TLabel;
        DBEdit5: TDBEdit;
        Label9: TLabel;
        DBEdit6: TDBEdit;
        Label10: TLabel;
        DBEdit7: TDBEdit;
        Label11: TLabel;
        DBEdit8: TDBEdit;
        Label12: TLabel;
        DBEdit9: TDBEdit;
        Label13: TLabel;
        DBEdit10: TDBEdit;
        Label14: TLabel;
        DBEdit11: TDBEdit;
        Label15: TLabel;
        DBEdit12: TDBEdit;
        Label16: TLabel;
        DBEdit13: TDBEdit;
        Label17: TLabel;
        DBEdit14: TDBEdit;
        Label18: TLabel;
        DBEdit15: TDBEdit;
        Label19: TLabel;
        DBEdit16: TDBEdit;
        Label20: TLabel;
        DBEdit17: TDBEdit;
        Label21: TLabel;
        DBEdit18: TDBEdit;
        Label22: TLabel;
        DBMemo1: TDBMemo;
        Label23: TLabel;
        DBGrid1: TDBGrid;
        DBMemo2: TDBMemo;
        DBLookupComboBox2: TDBLookupComboBox;
        procedure FormShow(Sender: TObject);
        procedure TBExitClick(Sender: TObject);
        procedure menuFileExitClick(Sender: TObject);
        procedure TabShtSuppEnter(Sender: TObject);
        procedure TabShtVisitEnter(Sender: TObject);
        procedure TabShtAEEnter(Sender: TObject);
        procedure TBFirstClick(Sender: TObject);
        procedure TBLastClick(Sender: TObject);
        procedure TBPriorClick(Sender: TObject);
        procedure TBNextClick(Sender: TObject);
        procedure TBNewClick(Sender: TObject);
        procedure OKBtnClick(Sender: TObject);
        procedure CancelBtnClick(Sender: TObject);
        procedure TBDelClick(Sender: TObject);
        procedure TBModiClick(Sender: TObject);
        procedure DBEdit3Exit(Sender: TObject);  private
        { Private declarations }
       
      public
        { Public declarations }
        ActiveDataSet : TTable; 
      end;var
      mainForm: TmainForm;implementationuses DataMod;{$R *.DFM}procedure TmainForm.FormShow(Sender: TObject);
    begin
            ActiveDataSet := DataMod.CustomerData.TblAE;
            DataMod.CustomerData.TblAE.Open;
            DataMod.CustomerData.TblSupp.Open;
            DataMod.CustomerData.TblVisit.Open;
            DBEdit1.SetFocus;end;procedure TmainForm.TBExitClick(Sender: TObject);
    begin
            close;
    end;procedure TmainForm.menuFileExitClick(Sender: TObject);
    begin
            close;
    end;procedure TmainForm.TabShtSuppEnter(Sender: TObject);
    begin
            ActiveDataSet := DataMod.CustomerData.TblSupp;
    end;procedure TmainForm.TabShtVisitEnter(Sender: TObject);
    begin
            ActiveDataSet := DataMod.CustomerData.TblVisit;
    end;procedure TmainForm.TabShtAEEnter(Sender: TObject);
    begin
            ActiveDataSet := DataMod.CustomerData.TblAE;
    end;procedure TmainForm.TBFirstClick(Sender: TObject);
    begin
            ActiveDataSet.First;
            TbFirst.Enabled := false;
            TbPrior.Enabled :=false;
            TbNext.Enabled := true;
            TbLast.Enabled := true;
    end;procedure TmainForm.TBLastClick(Sender: TObject);
    begin
            ActiveDataSet.Last;
            TbNext.Enabled := false;
            TbLast.Enabled := false;
            TbFirst.Enabled := true;
            TbPrior.Enabled := true;
    end;procedure TmainForm.TBPriorClick(Sender: TObject);
    begin
            if ActiveDataSet.Bof <> true then
            begin
                    ActiveDataSet.Prior;
                    TBNext.Enabled := true;
                    TBLast.Enabled := true;
            end
            else
              begin
                    TBPrior.Enabled := false;
                    TBFirst.Enabled := false;
                    TBNext.Enabled := true;
                    TBLast.Enabled := true;
              end;
    end;procedure TmainForm.TBNextClick(Sender: TObject);
    begin
            if ActiveDataSet.Eof <> true then
            begin
                    ActiveDataSet.Next;
                    TBFirst.Enabled := true;
                    TBPrior.Enabled := true;
            end
            else
            begin
              TBPrior.Enabled := true;
              TBFirst.Enabled := true;
              TBNext.Enabled := false;
              TBLast.Enabled := false;
            end;
    end;procedure TmainForm.TBNewClick(Sender: TObject);
    begin
            ActiveDataSet.Insert;
    end;procedure TmainForm.OKBtnClick(Sender: TObject);
    begin
            ActiveDataSet.Post;
            ActiveDataSet.Refresh;
    end;procedure TmainForm.CancelBtnClick(Sender: TObject);
    begin
            ActiveDataSet.Cancel;
    end;procedure TmainForm.TBDelClick(Sender: TObject);
    begin
            if MessageDlg('真的要删除这笔数据吗?',mtConfirmation,[mbYes,mbNo],0)= mrYes  then
            begin
                    ActiveDataSet.Delete;
            end;end;procedure TmainForm.TBModiClick(Sender: TObject);
    begin
            ActiveDataSet.Edit;
    end;
    procedure TmainForm.DBEdit3Exit(Sender: TObject);
    var
            WarnMsg:String;
    begin
            if DataMod.CustomerData.QrySuppByName.RecordCount > 0 then
            begin
            with DataMod.CustomerData.QrySuppByName  do
            begin
                WarnMsg := '业务员:';
                Warnmsg := WarnMsg + FieldByName('name').asString;
                WarnMsg := WarnMsg + #13;
                WarnMsg := WarnMsg + '厂商名称:';
                WarnMsg := WarnMsg + FieldByName('sname').asString;
                WarnMsg := WarnMsg + #13;
                WarnMsg := WarnMsg + FieldByName('addr').asString;
                WarnMsg := WarnMsg + #13;
                WarnMsg := WarnMsg + FieldByName('tel1').asString;
                ShowMessage(WarnMsg);
            end;
           end;
    end;end.
    // Another Unit Source File
    unit DataMod;interfaceuses
      SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms,
      Dialogs, DBTables, DB;type
      TCustomerData = class(TDataModule)
        TblAE: TTable;
        TblSupp: TTable;
        TblProd: TTable;
        TblVisit: TTable;
        TblCatalog: TTable;
        DSAE: TDataSource;
        DSSupp: TDataSource;
        DSProd: TDataSource;
        DSVisit: TDataSource;
        DSCatalog: TDataSource;
        TblGroup: TTable;
        TblInvestment: TTable;
        DSGroup: TDataSource;
        DSInvestment: TDataSource;
        DBMast: TDatabase;
        TblAEAEID: TAutoIncField;
        TblAENAME: TStringField;
        TblAEGROUP: TSmallintField;
        TblSuppSID: TAutoIncField;
        TblSuppSNAME: TStringField;
        TblSuppAEID: TIntegerField;
        TblSuppESNAME: TStringField;
        TblSuppADDR: TStringField;
        TblSuppEADDR: TStringField;
        TblSuppFADDR: TStringField;
        TblSuppEFADDR: TStringField;
        TblSuppEXECUTIVE: TStringField;
        TblSuppTEL1: TStringField;
        TblSuppTEL2: TStringField;
        TblSuppTEL3: TStringField;
        TblSuppFAX1: TStringField;
        TblSuppFAX2: TStringField;
        TblSuppEMAIL: TStringField;
        TblSuppURL: TStringField;
        TblSuppMOBILE: TStringField;
        TblSuppESTABLISH: TDateTimeField;
        TblSuppINVESTMENT: TSmallintField;
        TblSuppMARKET: TMemoField;
        TblVisitVID: TAutoIncField;
        TblVisitSID: TIntegerField;
        TblVisitDATE: TDateTimeField;
        TblVisitCONDITION: TMemoField;
        QrySuppByName: TQuery;
        DSQrySuppByName: TDataSource;
        QrySuppByNamename: TStringField;
        QrySuppByNamesname: TStringField;
        QrySuppByNameaddr: TStringField;
        QrySuppByNametel1: TStringField;
        procedure TblAEBeforeOpen(DataSet: TDataSet);    procedure TblVisitAfterOpen(DataSet: TDataSet);
        procedure DSAEStateChange(Sender: TObject);
        procedure DSSuppStateChange(Sender: TObject);
        procedure DSVisitStateChange(Sender: TObject);
        procedure TblSuppBeforePost(DataSet: TDataSet);
        procedure TblSuppSNAMEValidate(Sender: TField);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      CustomerData: TCustomerData;implementationuses main;{$R *.DFM}procedure TCustomerData.TblAEBeforeOpen(DataSet: TDataSet);
    begin
            TblGroup.Open;
    end;procedure TCustomerData.TblVisitAfterOpen(DataSet: TDataSet);
    begin
            TblInvestment.Open;
    end;
    procedure TCustomerData.DSAEStateChange(Sender: TObject);
    begin
            if DSAE.State = dsBrowse then
            begin
              with main.mainForm do
              begin
                OKBtn.Enabled := false;
                CancelBtn.Enabled :=false;
                TBNew.Enabled := true;
                TBModi.Enabled := true;
                TBDel.Enabled := true;
                TBFirst.Enabled := true;
                TBPrior.Enabled := true;
                TBNext.Enabled := true;
                TBLast.Enabled := true;
              end;
            end;
            if (DSAE.State = dsEdit) or (DSAE.State = dsInsert) then
            begin
              with main.mainForm do
              begin
                OKBtn.Enabled := true;
                CancelBtn.Enabled := true;
                TBNew.Enabled :=false;
                TBModi.Enabled := false;
                TBDel.Enabled := false;
                TBFirst.Enabled := false;
                TBPrior.Enabled := false;
                TBNext.Enabled := false;
                TBLast.Enabled := false;
              end;
            end;end;procedure TCustomerData.DSSuppStateChange(Sender: TObject);
    begin
      if DSSupp.State = dsBrowse then
            begin
              with main.mainForm do
              begin
                OKBtn.Enabled := false;
                CancelBtn.Enabled :=false;
                TBNew.Enabled := true;
                TBModi.Enabled := true;
                TBDel.Enabled := true;
                TBFirst.Enabled := true;
                TBPrior.Enabled := true;
                TBNext.Enabled := true;
                TBLast.Enabled := true;
              end;
            end;
            if (DSSupp.State = dsEdit) or (DSSupp.State = dsInsert) then
            begin
              with main.mainForm do
              begin
                OKBtn.Enabled := true;
                CancelBtn.Enabled := true;
                TBNew.Enabled :=false;
                TBModi.Enabled := false;
                TBDel.Enabled := false;
                TBFirst.Enabled := false;
                TBPrior.Enabled := false;
                TBNext.Enabled := false;
                TBLast.Enabled := false;
              end;
            end;end;procedure TCustomerData.DSVisitStateChange(Sender: TObject);
    begin
    if DSVisit.State = dsBrowse then
            begin
              with main.mainForm do
              begin
                OKBtn.Enabled := false;
                CancelBtn.Enabled :=false;
                TBNew.Enabled := true;
                TBModi.Enabled := true;
                TBDel.Enabled := true;
                TBFirst.Enabled := true;
                TBPrior.Enabled := true;
                TBNext.Enabled := true;
                TBLast.Enabled := true;
              end;
            end;
            if (DSVisit.State = dsEdit) or (DSVisit.State = dsInsert) then
            begin
              with main.mainForm do
              begin
                OKBtn.Enabled := true;
                CancelBtn.Enabled := true;
                TBNew.Enabled :=false;
                TBModi.Enabled := false;
                TBDel.Enabled := false;
                TBFirst.Enabled := false;
                TBPrior.Enabled := false;
                TBNext.Enabled := false;
                TBLast.Enabled := false;
              end;
            end;end;procedure TCustomerData.TblSuppBeforePost(DataSet: TDataSet);
    begin
    {调用查询组件进行重复性监测}
    end;procedure TCustomerData.TblSuppSNAMEValidate(Sender: TField);
    begin
            with QrySuppByName do
            begin
                    ParamByName('suppname').asString := TblSuppSNAME.Value;
                    Open;
            end;end;end.
      

  12.   

    Delphi是有bug,但很少,主要是程序员自己的问题。即使是有bug,程序员都能通过,派生新类重新编译源代码等多种方式解决。vc出现bug的话,你知道是什么bug吗?只有去死哈!!!
      

  13.   

    VC的bug多吗,我想问你是VC编的软件出错多还是DELPHI,MFC是建立在API上的较DELPHI底层的封装,如果底层封装都出错连篇的话,那微软就干脆关门算了.
    而DELPHI的VCL封装更高级,出错的可能性就越大,但使用就越方便(方便懒人^_^)
      

  14.   

    你别急,他们不回答你的问题,我回答!
    不过你要告诉我,到底是你烂还是Delphi烂???
    想清楚回答我!
      

  15.   

    我Kao,在FormShow中DBEdit.SetFocus?就是这个地方出现错误!@
    告诉你我看了你贴出代码之后,第一件事就是用查找SetFocus,果然,就是这个地方有问题!
      

  16.   

    这是两个弱智的问题:
    QrySuppByName:Can not perform this operation on a closed dataset.
    是操作关闭的数据集,这完全是你程序的问题,问题在那里自己找吧
      

  17.   

    不要自己不行,就拿Delphin乱骂。是不是没有被K过!
      

  18.   

    --- “MFC是建立在API上的较DELPHI底层的封装,如果底层封装都出错连篇的话,那微软就干脆关门算了.
    而DELPHI的VCL封装更高级,出错的可能性就越大,但使用就越方便(方便懒人^_^) ”
    那你告诉我,vcl是封装什么的?不是api吗?莫名其妙,从层次来说,vcl和mfc属于同一个层次的类库。我们知道:api层封装消息层,类库层封装api层。我不知道你所谓的vcl更高级是什么意思,如果你认为vcl不是封装api,那么你告诉我vcl建立在何处?要说使用者更方便,只是说明了vcl封装的比mfc更优秀。以我的观点来说,mfc根本没有做什么封装,仅仅封装了句柄参数而已!
      

  19.   

        Delphi是有Bug,我可不敢在这骂。哪个软件敢说自己没有bug.VC没有吗?SP4是干什么的?
        不过可以肯定的是,你的问题完全是你的原因。   
        另外,连这点问题都无法搞定,我绝对不相信你会玩VC。
      

  20.   

    MFC根本没有做什么封装,仅仅封装了句柄参数而已(HANDLE)?
    这是我今年来听过的最妙的言论了.
    依照这个理论,所有学VC的人都不用学MFC了.
    因为学了API就等于学会了VC,换句话说学习MFC的人都是傻瓜?????
      

  21.   

    TO KINGRON:
    开始时在DELPHI中SETFOCUS绝对可以正常工作,虽然我马上就怀疑过.
    但因为一切都正常,所以就没有理它.
    但是今天还是试一试 , 给这段代码加了注释.
    竟然没有问题了!!!我K.
    我看我的机子是神经过敏了.!!!
      

  22.   

    我靠,
    你TMD才是烂货。不会用别乱吼!
      

  23.   

    to:sweihua(无名) !!!!
    你在哪里!!!!
      

  24.   

    TMD,把源代码拿出来!!
    光哥找了你两天了!!!
    代码呢!!代码在哪里!!!
      

  25.   

    to virtualmfc(scale) 
    不要自欺欺人,单纯setfocus在FormCreate事件中是会出现错误的,除非:
      Self.Show;
      Edit1.SetFocus ;
      

  26.   

    谢谢chinaap(chinaap)、hxshanji(山鸡),提出的建议。我想以红色做为我的特色,
    单调是单调了些,但我不想去灌水,用些泡沫的东西去填充我的网页。http://ezym.yeah.net,欢迎大家的参观,有建议请到这里,交个朋友也到这里:[email protected] 
      

  27.   

    to:ykuang(ykuang):
    做的漂亮一点和泡沫没什么关系啊,并不是专业的东西就要搞的很严肃或者很单调
    TO:sweihua(无名)
    你TMD看到没有!!!
    KAO!!!
      

  28.   

    谢谢山鸡兄,下次会努力改进的!认识一下好吗?[email protected]
      

  29.   

    [email protected]
    呵呵,做网页其实我也不在行的,不过有几个内行的兄弟。
    [email protected]
      

  30.   

    真有趣,现在CSDN都快变成菜市场了。
    在我看来,vc能做的delphi基本上都能做,只不过具体的代码不一样而已。
    同意Nicrosoft的观点:程序员还是应该具备严谨的态度。