如何编一个类似抢答器的程序?
我们单位要组织信息化知识竞赛,要编一个类似抢答器的程序,就是主持人和数位抢答者各有一台电脑,彼此联网。主持人宣布完题目后,说开始(考虑在此时让主持人同时点击程序的开始按钮),各位抢答者找到答案后点击自己桌面上的程序的回答按钮,最先发送信息的在主持人的桌面上弹出一个消息框,如“*号最先回答”之类,同时主持人方的程序自动记录第二、三位回答者,以备第一位回答不正确时依序回答。 问题点数:20、回复次数:9Top
1 楼largewang(成都:王臻义[老王][C#学习中断])回复于 2004-12-03 17:14:18 得分 5
相当于区域内的聊天程序。
见delphi的demoTop
2 楼lovecat_sc()回复于 2004-12-03 17:34:35 得分 0
能不能具体一点?哪个DEMO?Top
3 楼pl5th2001(白牙)回复于 2004-12-04 11:45:36 得分 0
就是那个聊天的DEMOTop
4 楼pl5th2001(白牙)回复于 2004-12-04 11:46:33 得分 5
C:\Program Files\Borland\Delphi6\Demos\Internet\ChatTop
5 楼lovecat_sc()回复于 2004-12-07 11:00:13 得分 0
to pl5th2001(白牙):我看了例程,很有帮助。就是有一句看不懂,还请解释一下。在TCPServer的OnAccept事件中,有一句DataThread.TargetList := memRecv.lines;,注释是set the TagetList to the gui list that you with to synch with.(将TagetList与主界面中的LIST关联起来),但是我觉得应该是memRecv.lines:= DataThread.TargetList;才对啊。或者将这句去掉,在TClientDataThread.synchAddDataToControl方法中加入form1.memRecv.Lines:=TargetList;。很可惜我的两种方法都会出现EAccessException异常。
如果分不够我再加。Top
6 楼benbenliu(笨笨)回复于 2004-12-07 15:17:12 得分 10
1。DataThread.TargetList := memRecv.lines表示DataThread.TargetList是memRecv.lines的引用,Datathread在OnAccept事件里刚刚初始化,DataThread.TargetList = null,如果颠倒过来有何意义?
2。TargetList没有赋值当然不能访问了,要改可以将方法TClientDataThread.synchAddDataToControl的实现改成Form1.memRecv.Lines.Add(ListBuffer);但这样违反OO原则,破坏程序结构Top
7 楼lovecat_sc()回复于 2004-12-07 22:16:02 得分 0
谢谢 largewang、pl5th2001、benbenliu!
To benbenliu:
1.你的意思是说DataThread.TargetList := memRecv.lines只是将TargetList的内存地址(引用)赋给memRecv.lines,而不是值传递?
2.改成Form1.memRecv.Lines.Add(ListBuffer);也不行(我试了),Lines.Add要求TSring类型。
3.什么是00原则?
4.怎么加分?要不我另开一帖?Top
8 楼benbenliu(笨笨)回复于 2004-12-07 23:28:20 得分 0
1.Delphi中除了值类型,其他的都是引用类型,传递的都是对象的引用。
2.Form1.memRecv.Lines.AddStrings(ListBuffer);就可以了
3.OO就是面向对象,在那个例子中,TClientDataThread类的对象负责接受信息,并利用TClientDataThread对象的方法更新它自己的数据成员TargetList,这样整个现程对象是一个独立的整体,使其自身具有复用性
Top
9 楼lovecat_sc()回复于 2004-12-08 23:33:14 得分 0
谢谢!分太少,不好意思!Top




