📄 dau.pas
字号:
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 + -