DELPHI 怎么判断5个数字中是否有已知的3个数?

我把一张表导入了DBGrid中.一共是10条记录.每条记录都是一种中奖号码,如,01,03.05.06.08我想做到的是,如果中三个号就中奖.比如中01.03.06就算中... 我把一张表导入了DBGrid中. 一共是10条记录.
每条记录都是一种中奖号码,如,01,03.05.06.08

我想做到的是,如果中三个号就中奖.比如中01.03.06就算中奖.
我怎么知道哪条记录中奖呢??

应该怎么做.我真是一点头绪也没有.请高手指点一二.多谢
展开
 我来答
herrywood
2012-02-11 · TA获得超过869个赞
知道小有建树答主
回答量:523
采纳率:66%
帮助的人:484万
展开全部
将中奖号码01.03.06放到一个StringList中,在每行中调用如下函数对进行号码字段进行判断是否中奖。
假设:号码字段依次为F1,F2,...F6,StringList为bonus
Function isWinner(ds : TDateSet, bonus: TStrings) : Boolean;
var
cnt, i : Integer;
begin
cnt := 0;
for i := 1 to 6 do begin
if bonus.indexOf(ds.FieldByName('F' + i).asString) >= 0 then
cnt := cnt + 1;
if cnt >= 3 then
isWinner := TRUE;
end;
isWinner := FALSE;
end;
追问
十分感谢大哥的回答,小D实在太笨..是菜鸟中的菜鸟
您给的这代码我应该放在哪里?? 我放程序里时,运行通不过
[Error] Unit1.pas(79): Undeclared identifier: 'TDateSet'
[Error] Unit1.pas(85): ')' expected but identifier 'FieldByName' found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
实在不好意思.还请大哥看一下.一定多加分.
追答
不好意思,TDateSet写错,应为TDataSet,就是数据集控件
这个自定义函数,放在调用处的前面就可以了。关键是你要在哪调用?
还有参数ds要传TDataSet的名称,bonus也要初始化放入中奖数字后再传入,
bonus := TStringList.create;
bonus.add('01');
bonus.add('03');
bonus.add('06');
DataSet1.First; // 从第一条开始
while NOT DataSet1.EOF do begin
if (isWinner(DataSet1, bonus)) then // 调用自定义函数
showMessage('中奖号码:'
+ DataSet1.FieldByName('F1').asString + ","
+ DataSet1.FieldByName('F2').asString + ","
+ DataSet1.FieldByName('F3').asString + ","
+ DataSet1.FieldByName('F4').asString + ","
+ DataSet1.FieldByName('F5').asString + ","
+ DataSet1.FieldByName('F6').asString); // 用showMessage显示中奖的记录
DataSet1.Next; // 下一条记录
end;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式