⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ulottery.pas

📁 由sbzldlb发布的这款程序是关于彩票根据数据推算出号码。
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit ULottery;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, DB, ADODB, StdCtrls, TeEngine, Series, ExtCtrls,
  TeeProcs, Chart, DbChart, DBClient, Menus, jpeg;

type
  TBallInfo = record
    BallID    : Integer;
    BallCount : Integer;
    BallColor : String;
  end;

  TLotteryFrm = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    ADOConnection1: TADOConnection;
    OpenDialog1: TOpenDialog;
    StatusBar1: TStatusBar;
    DataSource1: TDataSource;
    TabSheet2: TTabSheet;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    E_FileName: TEdit;
    Button1: TButton;
    Button2: TButton;
    ProgressBar1: TProgressBar;
    Panel1: TPanel;
    C_BallColor: TComboBox;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    C_BallID: TComboBox;
    Button5: TButton;
    ClientDataSet: TClientDataSet;
    PageControl2: TPageControl;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    DBChart1: TDBChart;
    Series1: TFastLineSeries;
    L_XiangMuTu: TListView;
    TabSheet5: TTabSheet;
    L_FenBuTu: TListView;
    TabSheet6: TTabSheet;
    M_FenXiJieGuo: TMemo;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    Panel2: TPanel;
    ControlBar1: TControlBar;
    Image1: TImage;
    Panel3: TPanel;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    Label2: TLabel;
    E_HeZhiAve: TEdit;
    Label3: TLabel;
    E_JianJuAve: TEdit;
    Label4: TLabel;
    E_JiShuAve: TEdit;
    Label5: TLabel;
    E_OuShuAve: TEdit;
    M_LastThreeID: TEdit;
    M_RedMaxCount: TEdit;
    M_RedMinCount: TEdit;
    M_BlueMaxCount: TEdit;
    M_BlueMinCount: TEdit;
    StaticText8: TStaticText;
    E_NewID: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure C_BallColorChange(Sender: TObject);
    procedure C_BallIDChange(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
  private
    { Private declarations }
    procedure SetSeriesData();
    procedure ChangGuiZouShi;
    procedure FenBuTu;
    procedure XiangMuTu;
    procedure FenXiShuJu;
    procedure GetNewLotteryID;  
  public

    { Public declarations }
  end;

var
  LotteryFrm: TLotteryFrm;
  RedBallInfo:array[0..32] of TBallInfo;
  BlueBallInfo:array[0..15] of TBallInfo;
  
implementation

{$R *.dfm}
procedure TLotteryFrm.SetSeriesData();
begin
  with  Series1 do
  begin
    DataSource:= ClientDataSet;
    YValues.DateTime:= False;
    XValues.ValueSource:= 'X';
    XValues.DateTime:= False;
    YValues.ValueSource :='Y';
  end;
end;

//****************************************************************************//
//                                *通过XML显示图*                             //
//****************************************************************************//
function GetXMLHead:String;
begin
  Result:=Result+'<?xml version="1.0" standalone="yes"?> ';
  Result:=Result+'<DATAPACKET Version="2.0">';
  Result:=Result+'<METADATA>';
  Result:=Result+'<FIELDS>';
  Result:=Result+'<FIELD attrname="X" fieldtype="i4"/>';
  Result:=Result+'<FIELD attrname="Y" fieldtype="i4"/>';
  Result:=Result+'</FIELDS>';
  Result:=Result+'<PARAMS/>';
  Result:=Result+'</METADATA>';
  Result:=Result+'<ROWDATA>';
end;

function GetXMLEnd:String;
begin
  Result:=Result+'</ROWDATA>';
  Result:=Result+'</DATAPACKET>';
end;


procedure TLotteryFrm.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    E_FileName.Text:=OpenDialog1.FileName;
  end;
end;

procedure TLotteryFrm.Button2Click(Sender: TObject);
var
  LotteryDataList : TStrings;
  I,J,K,L,M       : Integer;
  LotteryID,
  OpenTime,
  RedLottery1,
  RedLottery2,
  RedLottery3,
  RedLottery4,
  RedLottery5,
  RedLottery6,
  BlueLottery     : String;
  OneLotteryData  : String;
  SubStr,SubStr1  : String;
  Money           : String;
  LotteryADOQuery : TAdoQuery;
begin
  K:=0;
  M:=0;
  SubStr:='';
  SubStr1:='';
  LotteryDataList:=TStringList.Create;
  try
    LotteryDataList.LoadFromFile(E_FileName.Text);
    ProgressBar1.Max:=LotteryDataList.Count;

    for I:=0 to LotteryDataList.Count-1 do
    begin

      OneLotteryData:=LotteryDataList.Strings[I];
      M:=0;
      K:=0;
      //SubStr:='';
      SubStr:='';
      for J:=1 to Length(OneLotteryData) do
      begin
        SubStr1:='';
        if OneLotteryData[j]=#9 then
        begin
          K:=K+1;
          case k of
            1:LotteryID:=SubStr;
            2:OpenTime:=SubStr;
            3:
            begin
              for L:=1 to Length(SubStr) do
              begin
                if (Copy(SubStr,L,1)=' ') or (Copy(SubStr,L,1)='+') then
                begin
                  M:=M+1;
                  case M of
                    1:RedLottery1:=SubStr1;
                    2:RedLottery2:=SubStr1;
                    3:RedLottery3:=SubStr1;
                    4:RedLottery4:=SubStr1;
                    5:RedLottery5:=SubStr1;
                    6:RedLottery6:=SubStr1;
                  end;
                  SubStr1:='';
                end else
                begin
                  SubStr1:=SubStr1+Copy(SubStr,L,1);
                end;

                if L=Length(SubStr) then BlueLottery:=SubStr1;
              end;
            end;
            4:Money:=SubStr;
          end;
          SubStr:='';
        end else
        begin
          SubStr:=SubStr+Copy(OneLotteryData,J,1);
        end;

      end;

      //Memo1.Lines.Add(LotteryID+' '+OpenTime+' '+RedLottery1+' '+RedLottery2+' '+RedLottery3+' '+RedLottery4+' '+RedLottery5+' '+RedLottery6+' '+BlueLottery+' '+Money)
      try
        LotteryADOQuery :=TAdoQuery.Create(Nil);
        try
          LotteryADOQuery.Connection:=ADOConnection1;
          LotteryADOQuery.Close;
          LotteryADOQuery.SQL.Text:='insert into Lottery (LotteryID,OpenTime,RedLottery1,RedLottery2,RedLottery3,RedLottery4,RedLottery5,RedLottery6,BlueLottery,LotteryMoney) values '
                                    +'( '
                                    +LotteryID+','
                                    +''''+OpenTime+''''+','
                                    +RedLottery1+','
                                    +RedLottery2+','
                                    +RedLottery3+','
                                    +RedLottery4+','
                                    +RedLottery5+','
                                    +RedLottery6+','
                                    +BlueLottery+','
                                    +Money

                                    +' )';
          LotteryADOQuery.ExecSQL;
        finally 
          FreeAndNil(LotteryADOQuery);
        end;
      except
      end;
      ProgressBar1.Position:=i+1;
    end;
  finally
    FreeAndNil(LotteryDataList);
  end;
end;

procedure TLotteryFrm.FormShow(Sender: TObject);
var
  I:Integer;
  BallAdoQuery:TAdoQuery;
begin
  for I:=0 to 32 do
  begin
    RedBallInfo[I].BallID:=I+1;
    RedBallInfo[I].BallCount:=0;
    RedBallInfo[I].BallColor:='Red';
  end;

  for I:=0 to 15 do
  begin
    BlueBallInfo[I].BallID:=I+1;
    BlueBallInfo[I].BallCount:=0;
    BlueBallInfo[I].BallColor:='Blue';
  end;

  BallAdoQuery:=TAdoQuery.Create(Nil);
  try
    with  BallAdoQuery do
    begin
      Connection:=ADOConnection1;
      Close;
      Sql.Text:='select * From Lottery order by LotteryID Desc';
      Open;

      for I:=0 to RecordCount-1 do
      begin
        RedBallInfo[FieldByname('RedLottery1').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery1').AsInteger-1].BallCount+1;
        RedBallInfo[FieldByname('RedLottery2').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery2').AsInteger-1].BallCount+1;
        RedBallInfo[FieldByname('RedLottery3').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery3').AsInteger-1].BallCount+1;
        RedBallInfo[FieldByname('RedLottery4').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery4').AsInteger-1].BallCount+1;
        RedBallInfo[FieldByname('RedLottery5').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery5').AsInteger-1].BallCount+1;
        RedBallInfo[FieldByname('RedLottery6').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery6').AsInteger-1].BallCount+1;
        BlueBallInfo[FieldByname('BlueLottery').AsInteger-1].BallCount:=RedBallInfo[FieldByname('BlueLottery').AsInteger-1].BallCount+1;
        Next;
      end;

    end;
  finally
    FreeAndNil(BallAdoQuery);
  end;

end;


procedure TLotteryFrm.ChangGuiZouShi;
var
  I        : Integer;
  XMLStr   : String;
begin
  //常规走势
  if C_BallColor.Text='红球' then
  begin
    For I:=0 to 32 do
    begin
      C_BallID.Items.Add(IntToStr(I+1));

      XMLStr:=XMLStr
        +'<ROW'
        +' X="'+IntToStr(RedBallInfo[I].BallID)
        +'" '
        +' Y="'+IntToStr(RedBallInfo[I].BallCount)
        +'" '
        +'/>';
    end;

    XMLStr:=GetXMLHead+XMLStr+GetXMLEnd;
  end else
  begin
    For I:=0 to 15 do
    begin
      C_BallID.Items.Add(IntToStr(I+1));

      XMLStr:=XMLStr
        +'<ROW'
        +' X="'+IntToStr(BlueBallInfo[I].BallID)
        +'" '
        +' Y="'+IntToStr(BlueBallInfo[I].BallCount)
        +'" '
        +'/>';
    end;

    XMLStr:=GetXMLHead+XMLStr+GetXMLEnd;
  end;

  SetSeriesData;
  ClientDataSet.XMLData:=XMLStr;
  ClientDataSet.Open;
end;

procedure TLotteryFrm.FenBuTu;
var
  CmdQuery : TAdoQuery;
  I,J      : Integer;
  List     : TListItem;
begin
  //分布图
  L_FenBuTu.Clear;
  if C_BallColor.Text='红球' then
  begin
    for I:=0 to 32 do
    begin
      if L_FenBuTu.Columns.Count<I+3 then
      begin
        L_FenBuTu.Columns.Add;
        L_FenBuTu.Column[I+2].Width:=24;
        L_FenBuTu.Column[I+2].Caption:=IntToStr(I+1);
      end;
    end;

    CmdQuery :=TAdoQuery.Create(NIl);
    try
      CmdQuery.Connection:=ADOConnection1;
      CmdQuery.Close;
      CmdQuery.SQL.Text:='select * From Lottery order by LotteryID Desc';
      CmdQuery.Open;



      for I:=0 to CmdQuery.RecordCount-1 do
      begin
        List:=L_FenBuTu.Items.Add;
        List.Caption:=CmdQuery.FieldByName('LotteryID').AsString;
        List.SubItems.Add(
          CmdQuery.FieldByname('RedLottery1').AsString
          +' '
          +CmdQuery.FieldByname('RedLottery2').AsString
          +' '
          +CmdQuery.FieldByname('RedLottery3').AsString
          +' '
          +CmdQuery.FieldByname('RedLottery4').AsString
          +' '
          +CmdQuery.FieldByname('RedLottery5').AsString
          +' '
          +CmdQuery.FieldByname('RedLottery6').AsString
          +'+'
          +CmdQuery.FieldByname('BlueLottery').AsString
          );

        if CmdQuery.FieldByname('RedLottery1').AsInteger+1> L_FenBuTu.Items[I].SubItems.Count then
        begin
          for j:=0 to  CmdQuery.FieldByname('RedLottery1').AsInteger-L_FenBuTu.Items[I].SubItems.Count do
          begin
          if CmdQuery.FieldByname('RedLottery1').AsInteger= L_FenBuTu.Items[I].SubItems.Count then
            List.SubItems.Add(CmdQuery.FieldByname('RedLottery1').AsString)
          else
            List.SubItems.Add('');
          end;
        end else  L_FenBuTu.Items[I].SubItems[CmdQuery.FieldByname('RedLottery1').AsInteger]
          :=CmdQuery.FieldByname('RedLottery1').AsString;

        if CmdQuery.FieldByname('RedLottery2').AsInteger+1> L_FenBuTu.Items[I].SubItems.Count then
        begin
          for j:=0 to  CmdQuery.FieldByname('RedLottery2').AsInteger-L_FenBuTu.Items[I].SubItems.Count do
          begin
          if CmdQuery.FieldByname('RedLottery2').AsInteger= L_FenBuTu.Items[I].SubItems.Count then
            List.SubItems.Add(CmdQuery.FieldByname('RedLottery2').AsString)
          else
            List.SubItems.Add('');
          end;
        end else  L_FenBuTu.Items[I].SubItems[CmdQuery.FieldByname('RedLottery2').AsInteger]
          :=CmdQuery.FieldByname('RedLottery2').AsString;


        if CmdQuery.FieldByname('RedLottery3').AsInteger+1> L_FenBuTu.Items[I].SubItems.Count then
        begin
          for j:=0 to  CmdQuery.FieldByname('RedLottery3').AsInteger-L_FenBuTu.Items[I].SubItems.Count do
          begin
          if CmdQuery.FieldByname('RedLottery3').AsInteger= L_FenBuTu.Items[I].SubItems.Count then
            List.SubItems.Add(CmdQuery.FieldByname('RedLottery3').AsString)
          else
            List.SubItems.Add('');
          end;
        end else  L_FenBuTu.Items[I].SubItems[CmdQuery.FieldByname('RedLottery3').AsInteger]
          :=CmdQuery.FieldByname('RedLottery3').AsString;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -