📄 main.~pas
字号:
while (not VarIsNull(Sheet.cells[r+2,1 ])) and (VarToStr(Sheet.cells[r+2,1 ]) <>'')and (R < 30000) do
begin
with ArrayOfPlayerInfo[r] do
begin
ID:= VarToStr(Sheet.cells[r+2,1]);
password :=VarToStr(Sheet.cells[r+2,2 ]);
UserName :=VarToStr(Sheet.cells[r+2,3 ]);
money := Sheet.cells[r+2,4 ];
LastActiveTime :=VarToDateTime(Sheet.cells[r+2,5 ]);
Memo :=VarToStr( Sheet.cells[r+2,6 ]);
end;
inc(R);
end;
APlayerList.PlayerCount := R;
except
if R>=0 then
MessageBox(Handle, Pchar(Format('第%d个用户(帐号可能是%s)的数据有问题!', [R+1, ArrayOfPlayerInfo[r].ID ])), '', MB_OK);
Exit;
end;
//R = RowCount;
APlayerList.Size := sizeof(TPlayerInfo) * R;
if rltInterpreter.CallSetPlayerList(APlayerList) then
MessageBox(Handle, '用户上传成功!','', MB_OK)
else
MessageBox(Handle, '用户上传失败!','', MB_OK);
finally
Cursor:=crDefault;
WorkBook.Close;
sheet := NULL;
WorkBook := NULL;
eclApp.Quit;
eclApp:=Unassigned;
end;
end;
procedure TMainForm.DownLoadGameLogActionExecute(Sender: TObject);
//下载游戏日志
var
I, J :integer;
CArrayofRoundInfo : TArrayofRoundInfo;
CRoundInfo : TRoundInfoLog;
Count : integer;
ExcelApp,WorkBook,Sheet, range:Variant; //声明为OLE Automation 对象
FileName : String;
Success : boolean;
const
Title : array [1..11] of String = (
'局',
'盘',
'前期余额',
'红色',
'黑色',
'绿色',
'号码',
'颜色',
'时间',
'本期盈利',
'本期余额');
IndexToColorStr : array [0..2] of String = ('红色',
'黑色',
'绿色');
AMStr : Array [boolean] of String = ('(干预)','(自动)');
Merges :array [0..6, 0..1] of TPoint =
( ((x:1; y:1),(x:2; y : 1)),( (x:1; y:2),(x:2; y : 2)),
((x:1; y:3),(x:2; y : 3)),
((x:1; y:4),(x:1; y : 6)),( (x:1; y:7),(x:1; y : 9)),
((x:1; y:10),(x:2; y : 10)),( (x:1; y:11),(x:2; y : 11))); //合并单元格
begin
if RoundState <> rsStop then
if IDYES <> MessageBox(Handle, '建议在游戏停止时进行此操作,是否继续?','',
MB_YesNo or MB_ICONQUESTION) then Exit;
SaveDialog1.FileName := '游戏日志'+FormatDateTime('yymmddhhnn', now);
if not SaveDialog1.Execute then Exit;
FileName := SaveDialog1.FileName;
FileName:=trim(FileName);
if length(FileName)=0 then
begin
ShowMessage('您未选择 Excel 文件!');
Exit;
end;
//打开选定的EXCEL文件
try
ExcelApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
Cursor:=crHourGlass;
try
WorkBook:=ExcelApp.WorkBooks.Add;
Excelapp.ActiveWorkbook.Worksheets.Add;
Sheet:=Excelapp.ActiveSheet;
Sheet.Name := '游戏日志';
ShowLoading('下载游戏日志中,请稍等...');
Count := rltInterpreter.CallGetRoundInfoLog(CArrayofRoundInfo);
for i := 0 to 6 do
begin
range:=sheet.range[sheet.cells[Merges[i,0].X,Merges[i,0].Y],sheet.cells[Merges[i,1].X,
Merges[i,1].Y]];//选定表格
range.select;
range.merge; //合并单元格
Range.HorizontalAlignment:= xlCenter;
Range.VerticalAlignment:= xlCenter;
// Range.Borders.LineStyle:=1;//加边框
end;
range:=sheet.range[sheet.cells[1,1],sheet.cells[2,11]];
// Range.Interior.ColorIndex:=2;
sheet.cells[1,4].Value:='下注金额';
sheet.cells[1,7].Value:='开盘';
for i := 1 to High(Title) do
begin
if i in [4, 5,6,7,8,9] then
sheet.cells[2,i].Value := Title[i]
else
sheet.cells[1,i].Value := Title[i];
end;
//ExcelApp.Cells.Select;
//ExcelApp.Selection.NumberFormatLocal := '@';
for J := 0 to count -1 do
begin
ShowLoading(Format('保存日志 [%d] 条', [j]));
CRoundInfo := CArrayofRoundInfo[j];
with CArrayofRoundInfo[j] do
begin
dvalue := r + b + g;
case resultcolor of
0:dvalue := dvalue - r * 2;
1:dvalue := dvalue - b * 2;
2:dvalue := dvalue - g * 36;
end;
Sheet.cells[j+3, 1].Value := Roundno;
Sheet.cells[j+3, 2].Value := wheelno;
Sheet.cells[j+3, 3].Value := value - dvalue;
Sheet.cells[j+3, 4].Value := r;
Sheet.cells[j+3, 5].Value := b;
Sheet.cells[j+3, 6].Value := g;
Sheet.cells[j+3, 7].Value := result;
Sheet.cells[j+3, 8].Value := IndexToColorStr[resultcolor]+ AMStr[auto];
Sheet.cells[j+3, 9].Value := FormatDateTime('yyyy-MM-dd hh:mm:ss',datetime);
Sheet.cells[j+3, 10].Value := dvalue;
Sheet.cells[j+3, 11].Value := value;
end;
end;
ShowLoading('保存数据中...');
ExcelApp.ActiveWorkbook.SaveAs(FileName);
Success := true;
finally
HideLoading;
Cursor:=crDefault;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
if Success then
ShowMessage('数据成功导出!!!');
end;
end;
procedure TMainForm.DownloadPlayerBetLogActionExecute(Sender: TObject);
var
I, J :integer;
CArrayofPlayerBetInfo : TArrayofPlayerBetInfo;
CPlayerBetInfo : TPlayerBetInfo;
Count : integer;
ExcelApp,WorkBook,Sheet, range:Variant; //声明为OLE Automation 对象
FileName : String;
Success : boolean;
DValue : integer;
const
Title : array [1..12] of String = (
'局',
'盘',
'帐号',
'前期余额',
'红色',
'黑色',
'绿色',
'号码',
'颜色',
'时间',
'本期盈利',
'本期余额');
Merges :array [0..7, 0..1] of TPoint =
( ((x:1; y:1),(x:2; y : 1)),( (x:1; y:2),(x:2; y : 2)),
((x:1; y:3),(x:2; y : 3)),( (x:1; y:4),(x:2; y : 4)),
((x:1; y:5),(x:1; y : 7)),( (x:1; y:8),(x:1; y : 10)),
((x:1; y:11),(x:2; y : 11)),( (x:1; y:12),(x:2; y : 12))); //合并单元格
ColorStr : array[0..2] of String = ('红色','黑色','绿色');
begin
if RoundState <> rsStop then
if IDYES <> MessageBox(Handle, '建议在游戏停止时进行此操作,是否继续?','',
MB_YesNo or MB_ICONQUESTION) then Exit;
SaveDialog1.FileName := '玩家下注日志'+FormatDateTime('yymmddhhnn', now);
if not SaveDialog1.Execute then Exit;
FileName := SaveDialog1.FileName;
FileName:=trim(FileName);
if length(FileName)=0 then
begin
ShowMessage('您未选择 Excel 文件!');
Exit;
end;
//打开选定的EXCEL文件
try
ExcelApp:=CreateOleObject('Excel.Application');
except
ShowMessage('您的机器里未安装Microsoft Excel。');
Exit;
end;
Cursor:=crHourGlass;
try
WorkBook:=ExcelApp.WorkBooks.Add;
Excelapp.ActiveWorkbook.Worksheets.Add;
Sheet:=Excelapp.ActiveSheet;
Sheet.Name := '玩家日志';
ShowLoading('下载游戏日志中,请稍等...');
Count := rltInterpreter.CallGetPlayerBetLog(CArrayofPlayerBetInfo);
Cursor:=crHourGlass;
for i := 0 to 7 do
begin
range:=sheet.range[sheet.cells[Merges[i,0].X,Merges[i,0].Y],sheet.cells[Merges[i,1].X,
Merges[i,1].Y]];//选定表格
range.select;
range.merge; //合并单元格
Range.HorizontalAlignment:= xlCenter;
Range.VerticalAlignment:= xlCenter;
// Range.Borders.LineStyle:=1;//加边框
end;
range:=sheet.range[sheet.cells[1,1],sheet.cells[2,12]];
// Range.Interior.ColorIndex:=2;
sheet.cells[1,5].Value:='下注金额';
sheet.cells[1,8].Value:='开盘';
for i := 1 to High(Title) do
begin
if i in [5,6,7,8,9,10] then
sheet.cells[2,i].Value := Title[i]
else
sheet.cells[1,i].Value := Title[i];
end;
for j := 0 to count -1 do
begin
ShowLoading(Format('保存日志 [%d] 条', [J]));
CPlayerBetInfo := CArrayofPlayerBetInfo[J];
with CArrayofPlayerBetInfo[J] do
begin
DValue := Settlement - PreMoney;
Sheet.cells[j+3, 1].Value := RoundNo;
Sheet.cells[j+3, 2].Value := WheelNo;
Sheet.cells[j+3, 3].Value := PlayerID;
Sheet.cells[j+3, 4].Value := PreMoney;
Sheet.cells[j+3, 5].Value := r;
Sheet.cells[j+3, 6].Value := b;//FormatDateTime('yyyy-MM-dd hh:mm:ss',datetime);
Sheet.cells[j+3, 7].Value := g;//RoundNo;
Sheet.cells[j+3, 8].Value := Result;// WheelNo;
if Result >=0 then
Sheet.cells[j+3, 9].Value :=ColorStr[ResultColor]// Result;
else if DValue >=0 then
Sheet.cells[j+3, 9].Value :='充值'
else if DValue <0 then
Sheet.cells[j+3, 9].Value :='金额操作';
Sheet.cells[j+3, 10].Value := FormatDateTime('yyyy-MM-dd hh:mm:ss',datetime);;
Sheet.cells[j+3, 11].Value := DValue;
Sheet.cells[j+3, 12].Value := Settlement;
end;
end;
ShowLoading('保存数据中...');
ExcelApp.ActiveWorkbook.SaveAs(FileName);
Success := true;
finally
HideLoading;
Cursor:=crDefault;
WorkBook.Close;
ExcelApp.Quit;
ExcelApp:=Unassigned;
if Success then
ShowMessage('数据成功导出!!!');
end;
end;
procedure TMainForm.ClearPlayerBetLogActionExecute(Sender: TObject);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作!','',
MB_ICONERROR);
Exit;
end;
if IDYes <> MessageBox(Handle, '是否清除服务器玩家下注日志资料!', '', MB_ICONQUESTION or MB_YesNO) then Exit;
if rltInterpreter.CallClearPlayerBetInfoLog then
MessageBox(Handle, '清除服务器玩家下注日志资料成功', '', MB_OK or MB_ICONINFORMATION)
else
MessageBox(Handle, '清除服务器玩家下注日志资料失败', '', MB_OK or MB_ICONERROR);
end;
procedure TMainForm.ClearPlayerInfoActionExecute(Sender: TObject);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作!','',
MB_ICONERROR);
Exit;
end;
if IDYes <> MessageBox(Handle, '是否清除服务器玩家资料!', '', MB_ICONQUESTION or MB_YesNO) then Exit;
if rltInterpreter.CallClearPlayerList then
MessageBox(Handle, '清除服务器玩家资料成功', '', MB_OK or MB_ICONINFORMATION)
else
MessageBox(Handle, '清除服务器玩家资料失败', '', MB_OK or MB_ICONERROR);
end;
procedure TMainForm.ClearGameLogActionExecute(Sender: TObject);
begin
if not rltSocketConnection.Connected then Exit;
if not (RoundState in [rsStop] )then
begin
MessageBox(Handle, '必须在游戏停止时进行此操作!','',
MB_ICONERROR);
Exit;
end;
if IDYes <> MessageBox(Handle, '是否清除服务器游戏日志资料!', '', MB_ICONQUESTION or MB_YesNO) then Exit;
if rltInterpreter.CallClearRoundInfoLog then
MessageBox(Handle, '清除服务器游戏日志资料成功', '', MB_OK or MB_ICONINFORMATION)
else
MessageBox(Handle, '清除服务器游戏日志资料失败', '', MB_OK or MB_ICONERROR);
end;
procedure TMainForm.StopActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then
begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsStop) then
begin
MessageBox(Handle, '停止游戏服务失败', '', MB_OK or MB_ICONERROR);
end
else
MessageBox(Handle, '游戏服务已停止。', '', MB_OK or MB_ICONINFORMATION);
end;
procedure TMainForm.StopOnRoundEndActionExecute(Sender: TObject);
begin
if rltInterpreter = nil then
begin
Exit;
end;
if not rltInterpreter.CallSetRoundState(rsPauseAtRoundEnd) then
begin
MessageBox(Handle, '设置本盘结束时暂停游戏服务失败!', '', MB_OK or MB_ICONERROR);
end;
end;
procedure TMainForm.ActionChangePasswordExecute(Sender: TObject);
begin
if rltInterpreter = nil then Exit;
ChangePassForm := TChangepassForm.Create(Application);
try
ChangepassForm.UserName.Text := UserName;
ChangepassForm.Password.Text := Password;
ChangepassForm.Changepassword2.Text := Password;
while ChangepassForm.ShowModal = mrOK do
begin
if ChangepassForm.Password.Text = ChangepassForm.Changepassword2.Text then
begin
if rltInterpreter.CallCheckAdmin(1, ChangepassForm.UserName.Text+';'+
ChangepassForm.Password.Text) then
begin
UserName := ChangepassForm.UserName.Text;
Password := ChangepassForm.Password.Text;
MessageBox(Handle, '密码修改成功!','', MB_ICONINFORMATION);
break;
end else
begin
break;
MessageBox(Handle, '密码修改失败!','', MB_ICONERROR);
end;
end else
begin
MessageBox(Handle, '两次输入密码必须相同!','', MB_ICONERROR);
end;
end;
finally
end;
end;
procedure TMainForm.ActionManager1Update(Action: TBasicAction;
var Handled: Boolean);
begin
Action6.Enabled := rltInterpreter = nil;
ActionChangePassword.Enabled := rltInterpreter <> nil;
PauseGameAction.Enabled := PauseGameAction.Enabled and (rltInterpreter <> nil);
ResumeAction.Enabled := (rltInterpreter <> nil) and ResumeAction.Enabled;
ResetGameAction.Enabled := rltInterpreter <> nil;
StopAction.Enabled := rltInterpreter <> nil;
RoundMonitorAction.Enabled := rltInterpreter <> nil;
N5.Enabled := rltInterpreter <> nil;
DownloadPlayerinfoAction.Enabled := rltInterpreter <> nil;
DownloadPlayerBetLogAction.Enabled := rltInterpreter <> nil;
DownLoadGameLogAction.Enabled := rltInterpreter <> nil;
UpLoadPlayerInfoAction.Enabled := rltInterpreter <> nil;
ClearPlayerInfoAction.Enabled := rltInterpreter <> nil;
ClearPlayerBetLogAction.Enabled := rltInterpreter <> nil;
ClearGameLogAction.Enabled := rltInterpreter <> nil;
end;
procedure TMainForm.N111Click(Sender: TObject);
begin
if rltInterpreter <> nil then
begin
if rltInterpreter.CallSetLock(True) then
begin
MessageBox(Handle, '锁定成功!','', MB_ICONINFORMATION);
end else
begin
MessageBox(Handle, '锁定失败!','', MB_ICONERROR);
end;
end;
end;
procedure TMainForm.N112Click(Sender: TObject);
begin
if rltInterpreter <> nil then
begin
if rltInterpreter.CallSetLock(false) then
begin
MessageBox(Handle, '解锁成功!','', MB_ICONINFORMATION);
end else
begin
MessageBox(Handle, '解锁失败!','', MB_ICONERROR);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -