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

📄 dau.pas

📁 一般的数据库管理系统 uses Classes, SConnectEx, TltConst, ExtCtrls, MMSystem, Types, windows, TltLogic , Sy
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit DAU;
interface
uses ADODB, DB, Types, classes, Forms, SyncObjs, Tltconst, rltSvr, SysUtils,
  Variants, ActiveX, Registry, ScktCnst, Windows;
const
  ckDBPath = 'DBPath';
  ConnectString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';
  PlayerSQL = 'select * from player';
  RoundSQL = 'select * from ';

  function DAUInit(): boolean;
  function DAUFinit(): boolean;
  function DALoadPlayer(Player : TPlayer): boolean;
  procedure DASavePlayer(Player : TPlayer);
  procedure DADeletePlayer(Player : TPlayer);
  function DACreatePlayer(Player: TPlayer):integer;
  function DAEditPlayer(Player: TPlayer):integer;
  function DAGetNewID(TableName, FieldName : String):integer;
  function DAGetNewPlayerID : String;
  procedure SaveWheel(Round : TRound);
  function ReadRoundScord(RoundID : integer; RoundScordArray: array of TRoundScord):boolean;
  procedure ReadGameSetting(var TimeSetting : TTimeSetting) ;
  procedure SaveGameSetting(TimeSetting : TTimeSetting);
  function GetPlayerCount: integer;
  procedure DAReadPlayers(Data : PArrayOfPlayerInfo; StartIndex , Count : integer);
  function DAReadLastChangePlayer(Data :PArrayOfPlayerInfo;var AfterTime : TDateTime):integer;
  function DAReadPlayer(APlayerID : String): TPlayerInfo;

  function DAReadGameParams(var AGameParams : TGameParams): boolean;
  function DASaveGameParams(AGameParams : TGameParams): boolean;

  function DASaveRoundScordInfo(AWheelInfo : TWheelInfo): boolean;
  function DASavePlayerBetInfo(APlayerBetInfo : TPlayerBetInfo) : boolean;
                      
  function DAGetRoundInfoLog(var AArrayofRoundInfo : TArrayofRoundInfo) : integer;
  function DAGetPlayerBetInfoLog(var AArrayofPlayerBetInfo : TArrayofPlayerBetInfo) : integer;
  function DAClearPlayerBetInfoLog : boolean;
  function DAClearRoundInfoLog : boolean;
  function DAClearPlayerList : boolean;

var
  CDBPath : String;

implementation
var
  Connection : TADOConnection;
  PlayerTable : TADOQuery;
  Query : TADOQuery;
  AccessCritical : TCriticalSection;
function GetPlayerCount: integer;
begin
  Result := 0;
  if (PlayerTable=nil)or(not PlayerTable.Active) then Exit;
  Result := PlayerTable.RecordCount;
end;

procedure DAReadPlayers(Data : PArrayOfPlayerInfo; StartIndex , Count : integer);
var
  I : integer;
  CPlayerInfo :TPlayerInfo;
begin
  if Count<=0 then Exit;
  if Data = nil then Exit;
  try
    AccessCritical.Enter;
    for I := StartIndex to Count+StartIndex-1 do
    begin
      PlayerTable.RecNo := I+1;
      FillChar(CPlayerInfo, sizeof(CPlayerInfo), #0);
      with CPlayerInfo do
      begin
        ID := VarToStr(PlayerTable['ID']);
        Password := VarToStr(PlayerTable['password']);
        UserName := VarToStr(PlayerTable['PlayName']);
        Money := (PlayerTable['chip']);
        LastActiveTime := PlayerTable.FieldByName('lastactive').AsDateTime;
      end;
      move(CPlayerInfo, Pointer(PChar(Data)+(I-StartIndex)*sizeof(TPlayerInfo))^, sizeof(TPlayerInfo));
    end;
  finally
    AccessCritical.Leave;
  end;
end;

function DAReadLastChangePlayer(Data :PArrayOfPlayerInfo;var AfterTime : TDateTime):integer;
var
  I : integer;
  CPlayerInfo :TPlayerInfo;
  NowTime : TDateTime;
begin
  Result := 0;
  NowTime := AfterTime;
  if Data = nil then Exit;
  try
    AccessCritical.Enter;
    for I := 0 to PlayerTable.RecordCount-1 do
    begin
      PlayerTable.RecNo := I+1;
      if PlayerTable.FieldByName('lastactive').AsDateTime > AfterTime then
      begin
        FillChar(CPlayerInfo, sizeof(CPlayerInfo), #0);
        with CPlayerInfo do
        begin
          ID := VarToStr(PlayerTable['ID']);
          Password := VarToStr(PlayerTable['password']);
          Money := (PlayerTable['chip']);
          UserName := varToStr(PlayerTable['playname']);
          Memo := VarToStr(PlayerTable['memo']);
          LastActiveTime := PlayerTable.FieldByName('lastactive').AsDateTime;
          if NowTime<LastActiveTime then NowTime := LastActiveTime;
        end;
        move(CPlayerInfo, Pointer(PChar(Data)+(Result)*sizeof(TPlayerInfo))^, sizeof(TPlayerInfo));
        inc(Result);
      end;
    end;
    AfterTime := NowTime;
  finally
    AccessCritical.Leave;
  end;
end;

function DAReadPlayer(APlayerID : String): TPlayerInfo;
begin
  FillChar(Result, sizeof(Result), #0);
  if not PlayerTable.Locate('ID', APlayerID, []) then Exit;
  with Result do
  begin
    ID := APlayerID;
    Password := VarToStr(PlayerTable['password']);
    Money := (PlayerTable['chip']);
    Memo := VarToStr(PlayerTable['memo']);
    UserName := VarToStr(PlayerTable['playname']);
    LastActiveTime := PlayerTable.FieldByName('lastactive').AsDateTime;
  end;
end;

function DAReadGameParams(var AGameParams : TGameParams): boolean;
var
  SysQuery : TADOQuery;
begin
  Result := false;
  SysQuery := TADOQuery.Create(nil);
  try
    SysQuery.Connection := Connection;
    SysQuery.SQL.Text := 'select * from sys';
    SysQuery.Open;
    SysQuery.First;
    if SysQuery.IsEmpty then Exit;
    AGameParams.RoundMain := SysQuery['roundmain'];
    AGameParams.BelTime := SysQuery['bettime'];
    AGameParams.BeforeWheelTime := SysQuery['beforewheeltime'];
    AGameParams.Rate := SysQuery['rate'];
    AGameParams.AdminStr :=VarToStr(SysQuery['adminstr']);
  finally
    SysQuery.Free;
  end;
  result := True;
end;

function DASaveGameParams(AGameParams : TGameParams): boolean;
var
  SysQuery : TADOQuery;
begin
  Result := false;      
  SysQuery := TADOQuery.Create(nil);
  try
    SysQuery.Connection := Connection;
    SysQuery.SQL.Text := 'select * from sys';
    SysQuery.Open;
    SysQuery.First;   
    if not SysQuery.IsEmpty then SysQuery.Edit
    else SysQuery.insert;

    SysQuery['roundmain'] := AGameParams.RoundMain;
    SysQuery['bettime'] := AGameParams.BelTime;
    SysQuery['beforewheeltime'] := AGameParams.BeforeWheelTime;
    SysQuery['rate'] := AGameParams.Rate;
    SysQuery['datetime'] := now;

    if Trim(AGameParams.AdminStr) = '' then AGameParams.AdminStr := ';';
    SysQuery['adminstr'] := AGameParams.AdminStr;
    SysQuery.Post;
  finally
    SysQuery.Free;
  end;
  result := True;
end;
function DASaveRoundScordInfo(AWheelInfo : TWheelInfo): boolean;
var             
  SysQuery : TADOQuery;
begin          
  Result := false;         
  SysQuery := TADOQuery.Create(nil);
  try                  
    SysQuery.Connection := Connection;
    SysQuery.SQL.Text := 'select * from round where 1=2';
    SysQuery.Open;
    SysQuery.insert;
    SysQuery['ID'] := AWheelInfo.RoundID;
    SysQuery['roundno'] := AWheelInfo.RoundID;
    SysQuery['wheelno'] := AWheelInfo.WheelID;
    SysQuery['value'] := AWheelInfo.Settment;
    SysQuery['r'] := AWheelInfo.RedBet;
    SysQuery['g'] := AWheelInfo.GreenBet;
    SysQuery['b'] := AWheelInfo.BlackBet;
    SysQuery['result'] := AWheelInfo.Result;
    SysQuery['resultcolor'] := AWheelInfo.ResultColor;
    SysQuery['datetime'] := now;
    SysQuery['auto'] := AWheelInfo.AutoValue;
    SysQuery.Post;
  finally
    SysQuery.Free;
  end;
  result := True;
end;

function DASavePlayerBetInfo(APlayerBetInfo : TPlayerBetInfo) : boolean;
var
  SysQuery : TADOQuery;
begin
  Result := false;
  SysQuery := TADOQuery.Create(nil);
  try
    SysQuery.Connection := Connection;
    SysQuery.SQL.Text := 'select * from smartlog where 1=2';
    SysQuery.Open;
    SysQuery.insert;
    SysQuery['player'] := APlayerBetInfo.PlayerID;
    SysQuery['rsmart'] := APlayerBetInfo.r;
    SysQuery['gsmart'] := APlayerBetInfo.g;
    SysQuery['bsmart'] := APlayerBetInfo.b;
    SysQuery['wheelno'] := APlayerBetInfo.WheelNo;
    SysQuery['roundno'] := APlayerBetInfo.RoundNo;
    SysQuery['roundmain'] := APlayerBetInfo.RoundMain;
    SysQuery['settlement'] := APlayerBetInfo.Settlement;
    SysQuery['result'] := APlayerBetInfo.Result;
    SysQuery['resultcolor'] := APlayerBetInfo.ResultColor;
    SysQuery['datetime'] := now;
    SysQuery['premoney'] := APlayerBetInfo.PreMoney;
    SysQuery.Post;
  finally
    SysQuery.Free;
  end;
  result := True;
end;




function DACreatePlayer(Player: TPlayer):integer;
begin
  Result := -1;
  if (PlayerTable=nil)or(not PlayerTable.Active) then Exit;
  try
    PlayerTable.Insert;
    PlayerTable['ID'] := Player.ID;
    PlayerTable['password'] := Player.Password;
    PlayerTable['playname'] := Player.UserName;
    PlayerTable['memo'] := Player.Memo;
    PlayerTable['chip'] := Player.Money;
    PlayerTable['lastactive'] := now;
    PlayerTable.Post;
  except                 
    PlayerTable.Cancel;
  end;
end;

function DAEditPlayer(Player: TPlayer):integer;
begin
  Result := -1;
  if (PlayerTable=nil)or(not PlayerTable.Active) then Exit;
  try
    if not PlayerTable.Locate('ID', Player.ID, []) then Exit;
    Result := 0;
    PlayerTable.Edit;
    PlayerTable['password'] := Player.Password;
    PlayerTable['playname'] := Player.UserName;
    PlayerTable['memo'] := Player.Memo;
    PlayerTable['chip'] := Player.Money;
    PlayerTable['lastactive'] := Player.LastActiveTime;
    PlayerTable.Post;
  except
    PlayerTable.Cancel;
    Result := 1;
  end;
end;

function DAUInit(): boolean;
var
  Reg : TRegINIFile;

⌨️ 快捷键说明

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