📄 datamodule_sql.pas
字号:
unit DataModule_Sql;
interface
uses
SysUtils, Classes, Activex,DB, ADODB,Castle,M2Share,HUtil32,Guild, MemDS,
DBAccess, MSAccess;
type
TDataModule_mir200 = class(TDataModule)
ADOConnection_Mir: TMSConnection;
ADOQuery: TMSQuery;
private
{ Private declarations }
public
//读取沙巴克信息
procedure LoadCastleList(var CastleManager:TCastleManager);
procedure CastleLoadConfig(var UserCastle:TUserCastle);
procedure CastleSaveConfigFile(var UserCastle:TUserCastle);
procedure LoadAttackSabukWall(var UserCastle:TUserCastle);
procedure SaveAttackSabukWall(var UserCastle:TUserCastle);
procedure ClearVar(varName:String;Value:Integer);
end;
var
DataModule_mir200:Array[0..1] of TDataModule_mir200;
implementation
uses svMain;
{$R *.dfm}
{ TDataModule_mir200 }
//读取沙巴克信息
procedure TDataModule_mir200.CastleLoadConfig(var UserCastle: TUserCastle);
var
i : Integer;
ObjUnit : pTObjUnit;
sMapList, sMAP : string;
Posindex:Integer;
begin
with UserCastle do
Begin
try
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select * from D_Castle where CastleIndex='+Inttostr(m_sConfigIndex));
ADOQuery.Open;
if ADOQuery.RecordCount>0 then
Begin
m_sName := ADOQuery.fieldByName('castleName').AsString;
m_sOwnGuild := ADOQuery.fieldByName('OwnGuild').AsString;
m_ChangeDate := ADOQuery.fieldByName('ChangeDate').AsDateTime;
m_WarDate := ADOQuery.fieldByName('WarDate').AsDateTime;
m_IncomeToday :=ADOQuery.fieldByName('IncomeTody').AsDateTime;
m_nTotalGold := ADOQuery.fieldByName('TotalGold').AsInteger;
m_nTodayIncome := ADOQuery.fieldByName('TodayIncome').AsInteger;
m_BoCanNULL:=ADOQuery.fieldByName('cannull').AsInteger=1;
sMapList := ADOQuery.fieldByName('CastleMapList').AsString;
if sMapList <> '' then
begin
while (sMapList <> '') do
begin
sMapList := GetValidStr3(sMapList, sMAP, [',']);
if sMAP = '' then
break;
m_EnvirList.Add(sMAP);
end;
end;
for i := 0 to m_EnvirList.Count - 1 do
begin
m_EnvirList.Objects[i] := g_MapManager.FindMap(m_EnvirList.Strings[i]);
end;
m_sMapName := ADOQuery.fieldByName('CastleMap').AsString;
m_sHomeMap :=ADOQuery.fieldByName('CastleHomeMap').AsString;
m_nHomeX := ADOQuery.fieldByName('CastleHomeX').AsInteger;
m_nHomeY := ADOQuery.fieldByName('CastleHomeY').AsInteger;
m_nWarRangeX := ADOQuery.fieldByName('CastleWarRangeX').AsInteger;
m_nWarRangeY :=ADOQuery.fieldByName('CastleWarRangeY').AsInteger;
m_sPalaceMap := ADOQuery.fieldByName('CastlePlaceMap').AsString;
m_sSecretMap := ADOQuery.fieldByName('CastleSecretMap').AsString;
m_nPalaceDoorX :=ADOQuery.fieldByName('CastlePalaceDoorX').AsInteger;
m_nPalaceDoorY :=ADOQuery.fieldByName('CastlePalaceDoorY').AsInteger;
End;
finally
ADOQuery.Close;
End;
try
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(format('Select * from D_Castle_ObjUnit where CastleIndex=%d ORDER BY pos ',[m_sConfigIndex]));
ADOQuery.Open;
for i:=0 to ADOQuery.RecordCount-1 do
Begin
PosIndex:=ADOQuery.FieldByName('pos').AsInteger;
case PosIndex of
0:
Begin
m_MainDoor.nX := ADOQuery.FieldByName('nx').AsInteger;
m_MainDoor.nY := ADOQuery.FieldByName('ny').AsInteger;
m_MainDoor.sName := ADOQuery.FieldByName('charname').AsString;
m_MainDoor.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
m_MainDoor.nHP := ADOQuery.FieldByName('nHp').AsInteger;
m_MainDoor.BaseObject := nil;
End;
1:
Begin
m_LeftWall.nX := ADOQuery.FieldByName('nx').AsInteger;
m_LeftWall.nY := ADOQuery.FieldByName('ny').AsInteger;
m_LeftWall.sName := ADOQuery.FieldByName('charname').AsString;
m_LeftWall.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
m_LeftWall.nHP := ADOQuery.FieldByName('nHp').AsInteger;
m_LeftWall.BaseObject := nil;
End;
2:
Begin
m_CenterWall.nX := ADOQuery.FieldByName('nx').AsInteger;
m_CenterWall.nY := ADOQuery.FieldByName('ny').AsInteger;
m_CenterWall.sName := ADOQuery.FieldByName('charname').AsString;
m_CenterWall.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
m_CenterWall.nHP := ADOQuery.FieldByName('nHp').AsInteger;
m_CenterWall.BaseObject := nil;
End;
3:
Begin
m_RightWall.nX := ADOQuery.FieldByName('nx').AsInteger;
m_RightWall.nY := ADOQuery.FieldByName('ny').AsInteger;
m_RightWall.sName := ADOQuery.FieldByName('charname').AsString;
m_RightWall.nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
m_RightWall.nHP := ADOQuery.FieldByName('nHp').AsInteger;
m_RightWall.BaseObject := nil;
End;
4..15:
Begin
m_Archer[PosIndex-4].nX := ADOQuery.FieldByName('nx').AsInteger;
m_Archer[PosIndex-4].nY := ADOQuery.FieldByName('ny').AsInteger;
m_Archer[PosIndex-4].sName := ADOQuery.FieldByName('charname').AsString;
m_Archer[PosIndex-4].nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
m_Archer[PosIndex-4].nHP := ADOQuery.FieldByName('nHp').AsInteger;
m_Archer[PosIndex-4].BaseObject := nil;
End;
16..19:
Begin
m_Guard[PosIndex-16].nX := ADOQuery.FieldByName('nx').AsInteger;
m_Guard[PosIndex-16].nY := ADOQuery.FieldByName('ny').AsInteger;
m_Guard[PosIndex-16].sName := ADOQuery.FieldByName('charname').AsString;
m_Guard[PosIndex-16].nStatus := ADOQuery.FieldByName('nStatus').AsInteger;
m_Guard[PosIndex-16].nHP := ADOQuery.FieldByName('nHp').AsInteger;
m_Guard[PosIndex-16].BaseObject := nil;
End;
End;
ADOQuery.Next;
End;
finally
ADOQuery.Close;
End;
m_MasterGuild := g_GuildManager[0].FindGuild(m_sOwnGuild);
end;
end;
procedure TDataModule_mir200.CastleSaveConfigFile(var UserCastle: TUserCastle);
var
ObjUnit : pTObjUnit;
sFileName, sConfigFile : string;
sMapList : string;
i : Integer;
sqlStr : String;
begin
with UserCastle do
Begin
try
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('Select * from D_Castle where CastleIndex='+Inttostr(m_sConfigIndex));
ADOQuery.Open;
if ADOQuery.RecordCount>0 then
ADOQuery.Edit
else
ADOQuery.Append;
ADOQuery.fieldByName('CastleIndex').AsInteger:=m_sConfigIndex;
ADOQuery.fieldByName('castleName').AsString:=m_sName;
ADOQuery.fieldByName('OwnGuild').AsString:=m_sOwnGuild;
ADOQuery.fieldByName('ChangeDate').AsDateTime:= m_ChangeDate;
ADOQuery.fieldByName('WarDate').AsDateTime:=m_WarDate;
ADOQuery.fieldByName('IncomeTody').AsDateTime:=m_IncomeToday;
ADOQuery.fieldByName('TotalGold').AsInteger:=m_nTotalGold ;
ADOQuery.fieldByName('TodayIncome').AsInteger:=m_nTodayIncome ;
if m_BoCanNULL then
ADOQuery.fieldByName('cannull').AsInteger:= 1
else
ADOQuery.fieldByName('cannull').AsInteger:= 0;
sMapList:='';
for i := 0 to m_EnvirList.Count - 1 do
begin
sMapList := sMapList + m_EnvirList.Strings[i] + ',';
end;
ADOQuery.fieldByName('CastleMapList').AsString:=sMapList;
ADOQuery.fieldByName('CastleMap').AsString:=m_sMapName ;
ADOQuery.fieldByName('CastleHomeMap').AsString:=m_sHomeMap;
ADOQuery.fieldByName('CastleHomeX').AsInteger:=m_nHomeX;
ADOQuery.fieldByName('CastleHomeY').AsInteger:=m_nHomeY;
ADOQuery.fieldByName('CastleWarRangeX').AsInteger:=m_nWarRangeX;
ADOQuery.fieldByName('CastleWarRangeY').AsInteger:=m_nWarRangeY;
ADOQuery.fieldByName('CastlePlaceMap').AsString:=m_sPalaceMap;
ADOQuery.fieldByName('CastleSecretMap').AsString:=m_sSecretMap;
ADOQuery.fieldByName('CastlePalaceDoorX').AsInteger:=m_nPalaceDoorX;
ADOQuery.fieldByName('CastlePalaceDoorY').AsInteger:=m_nPalaceDoorY;
ADOQuery.Post;
finally
ADOQuery.Close;
End;
for i:=0 to 20 do
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -