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

📄 main.~pas

📁 一般的数据库管理系统 uses Classes, SConnectEx, TltConst, ExtCtrls, MMSystem, Types, windows, TltLogic , Sy
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
      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 + -