越来越觉得delphi烂!(0分)

  • 主题发起人 主题发起人 softman11
  • 开始时间 开始时间
[h3][blue]
如 果 你 不 深 入 了 解 一 个 东 西 , 就 不 要 对 它 妄 加 评 论 !

连 V C L 源 代 码 都 没 有 看 过 , 就 来 发 表 这 样 的 评 论 , 荒 谬 !

还 有 资 格 说 别 人 有 偏 见 ? ! ! ![/blue][/h3]
 
大家就别说别的了,直接用砖头砸死他算了,谁让他到这里说Delphi不好!
要说也滚到VC++论坛去!
大家快拿砖头砸死他!
哈哈!
砸死他!!
傻冒一个!!(居然跑到这里说Delphi不好)
笨蛋一个!!(这种问题也搞不定)
傻B一个!!(狂妄自大,自以为了不起)
...........(大家接着补充呀)
 
补充一条
吝啬鬼一个!!(提个问题就给0分)
 
Delphi操作数据库确实有些地方不好,不论是ADO还是BDE,RecNo、RecordCount总是不敢用,不知道什么时候就出错误了。郁闷。
还是就问题论问题好,棍子不要抡的太远了。
 
ClientDataSet的功能狗强了,支持统计合计字段,
但过滤的时候据说对中文支持不好,这些又是在Midas.dll中实现的,
改都没得改, 只好不查中文了
 
嘿嘿,delphi狂热分子挺多的,咱虽然不狂热,但delphi是越用越喜欢,正对咱懒人
的胃口。
 
LiChaoHui说的不错啊
用vc的人其实心理很奇怪,明明做成同一件事,却要花几倍的时间来做。
其实许多人学VC都是因为别人说“VC好等等”,而本身花了2-3年,虽然
明白了VC麻烦之处,可是为了面子,就说VC做底层强,来勉励自己所花
的心血,可悲。
许多懒人用delphi,许多半调子程序员用delphi,不能说delphi就是
给懒人、半调子程序员用的。
 
看来很多人对vc++才真是充满的偏见!
我从来不反对RAD,所以我用delphi。学习c++/vc++,很多人根本的思维就是错误的。
他们总是用delphi的标准来衡量vc,我可以告诉你,凡是先学会delphi,并且开始依赖delphi的傻瓜化的人,再去学vc,是很难有进展的。

告诉你们吧,学习vc,学习c++,根本就不是想有些人说的:只是别人说他的功能强大,面子问题,不得不用。
学习c++/vc的目的是为了学习系统工作机理!很多人会说:使用delphi也可以了解呀?没错,我说过,只要一个工具能提供api调用接口,那么能实现的功能就不会有什么差别。但是操作系统是什么写的,api的格式是什么?不要告诉我是pascal吧?是c/c++.
如果你不会c/c++,你能看懂api吗?你用delphi如何调用?所以,那些所谓的delphi高手,或多或少,其实是懂得c/c++,他们其实不只不觉中,已经学会了很多c的东西。
但是c/c++程序员可以根本不懂pascal,一样可以作任何事情!

当我们作系统编程的时候,也就是通过api构建程序的时候,我们的界面非常简单,这个时候使用任何语言,本质上都是对api的调用,你说那种工具最好?
显然是c/c++。这种时候delphi有任何优势吗?比如网络通讯,比如语音传输,不如加密解密。有几个成功的系统不是c/c++写的。

另一方面,封装和重用也是现在发展趋势,delphi这方面作的不错!因此,快速开发,他是一个很好的选择。

很多delphi高手都说,根本不屑用delphi提供的控见。都是自己写!如果这样的化,可以说delphi失去了他的意义。
如果这样,使用c/c++自己写控见,要方便的。现在很多专业公司其实就是使用这样模式。使用vc开发定制的控见或者组件。
然后用vb或者delphi来装配程序。

没错,使用delphi也可以做到。楼上的有些人老是说:vc能作的,delphi也能作。不要说这些无聊的话了,我已经说过,功能上只要能调用api,就没有什么作不到,作的到的区别。
但是,那种最方便,显然是c/c++。

还有,使用vc++,没有1。2年功夫是很难用他来作商业程序的。所以,很多人半途而废。其实学习,vc,不是学习他的使用和语法,主要是通过他学习ms的思想,从而更输入的了解windows
的工作原理。你再windows下编程,不深入了解windows,怎么能行?

没错,我只是把delphi当作一个快速开发的工具。这个很多人为此鄙夷我。说,你连vcl源代码都没读过,还来唧唧歪歪。
呵呵,其实有必要吗?有人说,这样写出来的程序,敢拿出来用?如果这样说的话,也只能证明delphi的控见太烂,证明delphi烂。

我使用vb,难道还有分析他的运行库?这个本来就是你提供的东西,我按照你的方法使用。我的语句就一条。调用你的一个方法,除了问题,恐怕你也不能说不关你的事情?

当然,这里还有个先入为主的问题。自己熟悉的东西都觉得自己好。
其实,我倒是不排斥delphi。倒是很多人盲目排斥ms的东西,让我觉得可笑!

楼上有位朋友说,使用vc记忆力太差。其实我告诉你,不是程序员记忆力太差,而是你记忆力太差。而且就是因为你使用delphi造成的。
delphi适合懒人使用。我习惯了c++的模式,一切以代码优先。

所以,我使用delphi,觉得真的一点难度都没有。所以我觉得使用的感觉象使用authorware,很多人为此也觉得可笑。但事实就是如此。
很多人说,你不懂delphi,你不懂ado?没错,从一定程度上,我不懂ado,因为我不会去分析ado的源码,我只是使用他而已,
那么你懂吗?

其实持这种观点的人,什么都要自己作,恰恰适合使用c/c++.你们不去使用c/c++.真的非常可惜!
使用delphi不就是为了快速方便吗?

一切都要重头坐起,还有什么比c/c++更好的呢?

注意,我这里推崇c、从c++不是说pascal不好。而是从系统考虑的,因为我们用的操作系统,无论是windows
还是unix都是用的c/c++作为接口的。这点你不会不考虑吧?况且c的语法比pascal精练。

因此,我的观点是,后来者们一定要以c/c++作为基础,然后使用delphi作为工具,构建你的程序。
你会发觉,效率会提高很多。不要盲目排斥一个东西,尤其是ms的东西,ms东西总的说来,是非常成功的。

比如现在我看过的delphi程序员很多都使用:delphi+ado+ms sql server的模式,显然ms的东西未必想有些偏激人说的一无是处!

很多人说,你不要到这个delphi论坛上来,呵呵,我现在正在使用delphi,所以到这个论坛上来。
发了一点牢骚,表达了自己的观点。大家讨论而已,不要作人生攻击。

还有,这个论坛是哪个写的,实话实说,比较差,这么出名的delphi论坛,使用这个冬冬,感觉有点和这个论坛的人气不配!

 
如果有人用VC++做驱动程序以外的事情,他就傻瓜(我只是乱说的哈,用过的人不要放在心上^_*)
 
嘿嘿,这个论坛为什么比较差,一是因为yysun老师采用了微软的东西,用什么msxml来做,
连个自动换行都不行,而且yysun老师现在大概一门心思钻研ms的net技术,也没心思和精力
改进了。二是用delphi大都是象我这样的懒人,只会用delphi作些简单的东西,没水平去
改进。
delphi是个好东西(嘿嘿对懒人来说,对某些高手可能就不是了),但是用delphi
的大富翁们大都太烂了(包括我),论坛连个最常用的自动换行功能都不行,
却一直用到现在没有改进(几年了),作为一个程序员的论坛太丢脸了!我一直想说,
但考虑到yysun老师没这精力,自己又没本事改,提出来自讨没趣,所以一直没提。
 
看在softman11也是一个DELPHI初学者,大家不要和他争了,softman11说他用过几天C++,可是连以下这些问题都搞不定,呵呵:

问题:如何准确得到一个连接access数据库的adotable或者adoquery的记录数? ( 积分:50, 回复:11, 阅读:71 )
分类:数据库-文件型 ( 版主:hbezwwl, bubble )
来自:softman11, 时间:2003-4-25 13:22:00, ID:1801896 [显示:小字体 | 大字体]
要求多次查询和删改后,任然能够得到准确的当时数据库中的真是记录数


来自:LeeChange, 时间:2003-4-25 13:23:00, ID:1801903
Refresh后读RecordCount


来自:xzh2000, 时间:2003-4-25 13:23:00, ID:1801904
adotable1.recordcount


来自:softman11, 时间:2003-4-25 13:30:00, ID:1801926
使用recordcount经常都不准确.你们可以自己去试验.

如果在使用adotable.recordcount之前使用refresh方法.报错误:

缺少更新和操作的键列信息!


来自:小苹果, 时间:2003-4-25 14:31:00, ID:1802231
refresh方法 有时候报错,,, 但是有的系统却不报错,,和你的那个BDE有关系。
你可以先close,,然后,open ....然后在adotable1.recordcount,,,我想你应该可以得到
准确的数目拉。。。
我经常这样做,也没什么不对呀,,


来自:ww20000309, 时间:2003-4-25 14:36:00, ID:1802253
如果是为循环我相你最好是用
while not adotable.eof do
如果不是,那么在进行完删除后,用post提交后在用recordcount。


来自:softman11, 时间:2003-4-25 17:51:00, ID:1803033
小苹果,我用的是ado.
楼上两位的方法我都用过了.不管用.我贴出我的程序吧:

procedure TForm4.Button1Click(Sender: TObject);
var
time,sql,constr:string;
i,count,count2:integer;
begin
//查询sql上的数据
label4.Caption:='正在获取SQL服务器上的数据,请等待...';
time:=combobox1.Text+'-'+combobox2.Text+'('+combobox3.Text+')';
sql:='select bjid,bjmc,kcmc,kcmcid,kclb,kkxq,kksj,zrs,zjjs,khfs,kkkslbid '
+'from view_kkplan where substring(bjid,1,2)=''28'''
+' and KKSJ='''+time+'''';
form1.SQLADOQuery1.Close;
form1.SQLADOQuery1.SQL.clear;
form1.SQLADOQuery1.SQL.Add(sql);
try
form1.SQLADOQuery1.Open;
except
messagebox(0,'查询数据出错!','错误信息',0);
exit
end;

count:=form1.SQLADOQuery1.RecordCount;
label4.Caption:='从SQL服务器上获得 '+inttostr(count)+' 条记录';
constr:='Provider=Microsoft.Jet.OLEDB.4.0;'
+'Data Source='+localmdbname
+';Persist Security Info=False';

//清除本地数据库
label4.Caption:='开始删除本地数据库的数据';

try
form1.LocalADOTable1.close;
form1.LocalADOQuery1.SQL.Clear;
form1.LocalADOQuery1.SQL.Add('delete * from QMCTYJ');
form1.LocalADOQuery1.ExecSQL;


except
messagebox(0,'删除本地数据库出错!','错误信息',0);
exit
end;
label4.Caption:='删除本地数据库完成';

progressbar1.Max:=count+10;
progressbar1.StepBy(10);
//copy to local
form1.LocalADOTable1.Close;
form1.LocalADOTable1.ConnectionString:=constr;
form1.LocalADOTable1.TableName:='QMCTYJ';
try
form1.LocalADOTable1.Open;
except
messagebox(0,'连接本地数据库出错!','错误信息!',0);
exit
end;
label4.Caption:='开始复制数据到本地...';
form1.SQLADOQuery1.First;
for i:=1 to count do
begin
Form1.Localadotable1.Append;
Form1.Localadotable1.FieldValues['BJID']:=Form1.SQLadoquery1.FieldValues['BJID'];
Form1.Localadotable1.FieldValues['BJMC']:=Form1.SQLadoquery1.FieldValues['BJMC'];
Form1.Localadotable1.FieldValues['KCMC']:=Form1.SQLadoquery1.FieldValues['KCMC'];
Form1.Localadotable1.FieldValues['KCMCID']:=Form1.SQLadoquery1.FieldValues['KCMCID'];
Form1.Localadotable1.FieldValues['KCLB']:=Form1.SQLadoquery1.FieldValues['KCLB'];
Form1.Localadotable1.FieldValues['KKXQ']:=Form1.SQLadoquery1.FieldValues['KKXQ'];
Form1.Localadotable1.FieldValues['KKSJ']:=Form1.SQLadoquery1.FieldValues['KKSJ'];
Form1.Localadotable1.FieldValues['ZRS']:=Form1.SQLadoquery1.FieldValues['ZRS'];
Form1.Localadotable1.FieldValues['ZJJS']:=Form1.SQLadoquery1.FieldValues['ZJJS'];
Form1.Localadotable1.FieldValues['KHFS']:=Form1.SQLadoquery1.FieldValues['KHFS'];
Form1.Localadotable1.FieldValues['BJID']:=Form1.SQLadoquery1.FieldValues['BJID'];
Form1.Localadotable1.Post;
form1.SQLADOQuery1.Next;
progressbar1.StepIt
end;
count2:=0;
form1.LocalADOTable1.Close;
form1.LocalADOTable1.Open;
form1.LocalADOTable1.First;
while not form1.LocalADOTable1.Eof do
begin
count2:=count2+1;
form1.LocalADOTable1.Next;
end;

//count2:=Form1.LocalADOTable1.RecordCount;
label4.Caption:='成功获取数据完成,服务器上查询出 '+inttostr(count)
+' 条记录,复制成功 '+inttostr(count2)+ ' 条记录';




end;



来自:ww20000309, 时间:2003-4-27 15:49:00, ID:1807343
我想你在删除的时候,是不是物理删除。dephi对dbase,prodox和vfp不能物理删除,有可能
你不能得到正确的数据。


来自:softman11, 时间:2003-4-29 10:41:00, ID:1812556
我用的是access2000数据库。


来自:wqthai, 时间:2003-4-29 11:12:00, ID:1812767
是不是ado要打补丁包阿?


来自:netwang, 时间:2003-4-29 11:21:00, ID:1812833
既然用ADOQuery,怎么不用Sql的Count函数呢,
adoquery.close
sql := 'select Count(*) from table';
adoquery.sql.clear;
adoquery.sql.add(sql);
adoquery.open;

recCount := adoquery.Fields[0].AsInteger



来自:truecat, 时间:2003-4-29 11:24:00, ID:1812857
用另外一个adoquery(不是你用来操作数据的这个)来取得记录数:
select count(*) as RECCOUNT from TableName


 
agree with haofang

find the prob% from you self.
 
真烂,,,学的头痛
 
“文革”的遗病仍在,大家现在似乎仍然有一种“打倒**”的习惯性思想,就如同喜欢
上海的人就喜欢“打倒”不喜欢上海的人,反之亦是,其实你爱用什么就用什么,犯不着
去打倒人家爱用的另一种东西。
 
偶毕业设计是用vc做的,就在快毕业时,偶接触了delphi,
当时发出感叹:如果当初我会delphi..........
 
WINAPI其实就是pascal调用方式,哈哈,连API都是用PASCAL的函数调用方式,
还说PASCAL不适合开发WINDOWS程序?
 
啊,张无忌,真的吗?我还真不知道(blush..)
能具体点吗?
 
pascal调用方式节约内存,最开始WIN3。1下就是用的这种方式,所以到了WIN9X到现在的
WINXP API都是这种调用方式
 
原来如此!
不过没有一本VC的书上这么说过....
 
cg1120,我贴出这些问题,你也看到了,这些网友的方法我都用过的。但是还是不准。甚至我连sleep都用上了
可是还是不准。有时候就不准,不是我一个有这个问题。

你怎么不能提出新的解决办法?

我一开始就说过,连查询准确记录数这个简单的东西,在delphi中都要出现问题。呵呵,delphi的东西可想而知。

还有楼上的,你应该庆幸你使用了vc作毕业设计,因为今天你学delphi才会觉得如此简单和方便。
 
后退
顶部