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

📄 dxdatabaseservercore.pas

📁 Well known and usefull component for delphi 7
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    Procedure SetOnCommandFINDFIRST(value:DatabaseTBasicEvent);
    Procedure SetOnCommandFINDLAST(value:DatabaseTBasicEvent);
    Procedure SetOnCommandFINDNEXT(value:DatabaseTBasicEvent);
    Procedure SetOnCommandFINDPRIOR(value:DatabaseTBasicEvent);
    Procedure SetOnCommandFINDFIELD(value:DatabaseTSimpleEvent);
    Procedure SetOnCommandGETFIELDLIST(value:DatabaseTBasicEvent);
    Procedure SetOnCommandLOCATECASEINSENSITIVE(value:DatabaseTSimpleEvent);
    Procedure SetOnCommandLOCATEPARTIALKEY(value:DatabaseTSimpleEvent);
    Procedure SetOnCommandLOCATENOOPTIONS(value:DatabaseTBasicEvent);
    Procedure SetOnCommandLOCATEBOTHOPTIONS(value:DatabaseTBasicEvent);
    Procedure SetOnCommandLOCATE(value:DatabaseTComplexEvent);
    Procedure SetOnCommandAPPEND(value:DatabaseTBasicEvent);
    Procedure SetOnCommandINSERT(value:DatabaseTBasicEvent);
    Procedure SetOnCommandEDIT(value:DatabaseTBasicEvent);
    Procedure SetOnCommandDELETE(value:DatabaseTBasicEvent);
    Procedure SetOnCommandPOST(value:DatabaseTBasicEvent);
    Procedure SetOnCommandCANCEL(value:DatabaseTBasicEvent);
    Procedure SetOnCommandREFRESH(value:DatabaseTBasicEvent);
    Procedure SetOnCommandFIELDBYNAME(value:DatabaseTComplexEvent);
  public
    constructor Create(AOwner:TComponent); {$IFNDEF OBJECTS_ONLY} override; {$ENDIF}
    destructor Destroy; override;
    procedure ProcessSession(ClientThread: TDXClientThread);
    Procedure AddSimpleEvent(Command:String;EventProc:DatabaseTSimpleEvent);
    Procedure AddBasicEvent(Command:String;EventProc:DatabaseTBasicEvent);
    Procedure AddComplexEvent(Command:String;EventProc:DatabaseTComplexEvent);
  published
    property OnCommandUSER: DatabaseTSimpleEvent read fOnCommandUSER
                                                 write SetOnCommandUSER;
    property OnCommandPASS: DatabaseTSimpleEvent read fOnCommandPASS
                                                 write SetOnCommandPASS;
    property OnCommandAUTH: DatabaseTComplexEvent read fOnCommandAUTH
                                                  write SetOnCommandAUTH;
    property OnCommandSETACTIVE: DatabaseTSimpleEvent read fOnCommandSETACTIVE
                                                      write SetOnCommandSETACTIVE;
    property OnCommandISBOF: DatabaseTBasicEvent read fOnCommandISBOF
                                                 write SetOnCommandISBOF;
    property OnCommandISEOF: DatabaseTBasicEvent read fOnCommandISEOF
                                                 write SetOnCommandISEOF;
    property OnCommandISEMPTY: DatabaseTBasicEvent read fOnCommandISEMPTY
                                                   write SetOnCommandISEMPTY;
    property OnCommandCANMODIFY: DatabaseTBasicEvent read fOnCommandCANMODIFY
                                                     write SetOnCommandCANMODIFY;
    property OnCommandFIELDCOUNT: DatabaseTBasicEvent read fOnCommandFIELDCOUNT
                                                      write SetOnCommandFIELDCOUNT;
    property OnCommandRECORDCOUNT: DatabaseTBasicEvent read fOnCommandRECORDCOUNT
                                                       write SetOnCommandRECORDCOUNT;
    property OnCommandRECORDSIZE: DatabaseTBasicEvent read fOnCommandRECORDSIZE
                                                      write SetOnCommandRECORDSIZE;
    property OnCommandFOUND: DatabaseTBasicEvent read fOnCommandFOUND
                                                 write SetOnCommandFOUND;
    property OnCommandMODIFIED: DatabaseTBasicEvent read fOnCommandMODIFIED
                                                    write SetOnCommandMODIFIED;
    property OnCommandCREATEDATASET: DatabaseTSimpleEvent read fOnCommandCREATEDATASET
                                                          write SetOnCommandCREATEDATASET;
    property OnCommandDISPOSEDATASET: DatabaseTSimpleEvent read fOnCommandDISPOSEDATASET
                                                           write SetOnCommandDISPOSEDATASET;
    property OnCommandOPEN: DatabaseTBasicEvent read fOnCommandOPEN
                                                write SetOnCommandOPEN;
    property OnCommandCLOSE: DatabaseTBasicEvent read fOnCommandCLOSE
                                                 write SetOnCommandCLOSE;
    property OnCommandFIRST: DatabaseTBasicEvent read fOnCommandFIRST
                                                 write SetOnCommandFIRST;
    property OnCommandNEXT: DatabaseTBasicEvent read fOnCommandNEXT
                                                write SetOnCommandNEXT;
    property OnCommandPRIOR: DatabaseTBasicEvent read fOnCommandPRIOR
                                                 write SetOnCommandPRIOR;
    property OnCommandLAST: DatabaseTBasicEvent read fOnCommandLAST
                                                write SetOnCommandLAST;
    property OnCommandMOVEBY: DatabaseTSimpleEvent read fOnCommandMOVEBY
                                                   write SetOnCommandMOVEBY;
    property OnCommandFINDFIRST: DatabaseTBasicEvent read fOnCommandFINDFIRST
                                                     write SetOnCommandFINDFIRST;
    property OnCommandFINDLAST: DatabaseTBasicEvent read fOnCommandFINDLAST
                                                    write SetOnCommandFINDLAST;
    property OnCommandFINDNEXT: DatabaseTBasicEvent read fOnCommandFINDNEXT
                                                    write SetOnCommandFINDNEXT;
    property OnCommandFINDPRIOR: DatabaseTBasicEvent read fOnCommandFINDPRIOR
                                                     write SetOnCommandFINDPRIOR;
    property OnCommandFINDFIELD: DatabaseTSimpleEvent read fOnCommandFINDFIELD
                                                      write SetOnCommandFINDFIELD;
    property OnCommandGETFIELDLIST: DatabaseTBasicEvent read fOnCommandGETFIELDLIST
                                                        write SetOnCommandGETFIELDLIST;
    property OnCommandLOCATECaseInsensitive: DatabaseTSimpleEvent read fOnCommandLOCATECaseInsensitive
                                                                  write SetOnCommandLOCATECaseInsensitive;
    property OnCommandLOCATEPartialKey: DatabaseTSimpleEvent read fOnCommandLOCATEPartialKey
                                                             write SetOnCommandLOCATEPartialKey;
    property OnCommandLOCATENoOptions: DatabaseTBasicEvent read fOnCommandLOCATENoOptions
                                                           write SetOnCommandLOCATENoOptions;
    property OnCommandLOCATEBothOptions: DatabaseTBasicEvent read fOnCommandLOCATEBothOptions
                                                             write SetOnCommandLOCATEBothOptions;
    property OnCommandLOCATE: DatabaseTComplexEvent read fOnCommandLOCATE
                                                    write SetOnCommandLOCATE;
    property OnCommandAPPEND: DatabaseTBasicEvent read fOnCommandAPPEND
                                                  write SetOnCommandAPPEND;
    property OnCommandINSERT: DatabaseTBasicEvent read fOnCommandINSERT
                                                  write SetOnCommandINSERT;
    property OnCommandEDIT: DatabaseTBasicEvent read fOnCommandEDIT
                                                write SetOnCommandEDIT;
    property OnCommandDELETE: DatabaseTBasicEvent read fOnCommandDELETE
                                                  write SetOnCommandDELETE;
    property OnCommandPOST: DatabaseTBasicEvent read fOnCommandPOST
                                                write SetOnCommandPOST;
    property OnCommandCANCEL: DatabaseTBasicEvent read fOnCommandCANCEL
                                                  write SetOnCommandCANCEL;
    property OnCommandREFRESH: DatabaseTBasicEvent read fOnCommandREFRESH
                                                   write SetOnCommandREFRESH;
    property OnCommandFIELDBYNAME: DatabaseTComplexEvent read fOnCommandFIELDBYNAME
                                                         write SetOnCommandFIELDBYNAME;
    property OnCommandOther: DatabaseTOtherEvent read fOnCommandOther
                                         write fOnCommandOther;
  end;

implementation

Uses
   DXString,
   DXSock;

Type
  PDatabaseSimpleEvent=^TDatabaseSimpleEvent;
  TDatabaseSimpleEvent=record
     Tag:Integer;
     Command:String;
     EventProcedure:DatabaseTSimpleEvent;
  End;
  PDatabaseBasicEvent=^TDatabaseBasicEvent;
  TDatabaseBasicEvent=record
     Tag:Integer;
     Command:String;
     EventProcedure:DatabaseTBasicEvent;
  End;
  PDatabaseComplexEvent=^TDatabaseComplexEvent;
  TDatabaseComplexEvent=record
     Tag:Integer;
     Command:String;
     EventProcedure:DatabaseTComplexEvent;
  End;

constructor TDXDatabaseServerCore.Create(AOwner:TComponent);
begin
   inherited Create(AOwner);
   ServerPort:=5335;
   ProtocolToBind:=wpTCPOnly; // !!!! no UDP !!!!
end;

destructor TDXDatabaseServerCore.Destroy;
Var
   PSimpleEvent:PDatabaseSimpleEvent;
   PBasicEvent:PDatabaseBasicEvent;
   PComplexEvent:PDatabaseComplexEvent;

begin
   If Assigned(fEventArray) then Begin
      While fEventArray.Count>0 do Begin
         Case PDatabaseSimpleEvent(fEventArray[0]).Tag of
            1:Begin
              PSimpleEvent:=fEventArray[0];
              Dispose(PSimpleEvent);
            End;
            2:Begin
              PBasicEvent:=fEventArray[0];
              Dispose(PBasicEvent);
            End;
            3:Begin
              PComplexEvent:=fEventArray[0];
              Dispose(PComplexEvent);
            End;
         End;
         fEventArray.Delete(0);
      End;
   End;
   inherited Destroy;
end;

Procedure TDXDatabaseServerCore.AddSimpleEvent(Command:String;EventProc:DatabaseTSimpleEvent);
Var
   PSimpleEvent:PDatabaseSimpleEvent;
   Loop:Integer;

Begin
   Command:=Uppercase(Command);
   Loop:=0;
   While Loop<fEventArray.Count do Begin
      If PDatabaseSimpleEvent(fEventArray[Loop]).Command=Command then Begin
         PDatabaseSimpleEvent(fEventArray[Loop]).EventProcedure:=EventProc;
         Exit;
      End
      Else Inc(Loop);
   End;
   New(PSimpleEvent);
   PSimpleEvent.Tag:=1;      // Denotes Event in fEventArray is a TSimpleEvent!
   PSimpleEvent.Command:=Command;
   PSimpleEvent.EventProcedure:=EventProc;
   fEventArray.Add(PSimpleEvent);
End;

Procedure TDXDatabaseServerCore.AddBasicEvent(Command:String;EventProc:DatabaseTBasicEvent);
Var
   PBasicEvent:PDatabaseBasicEvent;
   Loop:Integer;

Begin
   Command:=Uppercase(Command);
   Loop:=0;
   While Loop<fEventArray.Count do Begin
      If PDatabaseBasicEvent(fEventArray[Loop]).Command=Command then Begin
         PDatabaseBasicEvent(fEventArray[Loop]).EventProcedure:=EventProc;
         Exit;
      End
      Else Inc(Loop);
   End;
   New(PBasicEvent);
   PBasicEvent.Tag:=2;      // Denotes Event in fEventArray is a TBasicEvent!
   PBasicEvent.Command:=Command;
   PBasicEvent.EventProcedure:=EventProc;
   fEventArray.Add(PBasicEvent);
End;

Procedure TDXDatabaseServerCore.AddComplexEvent(Command:String;EventProc:DatabaseTComplexEvent);
Var
   PComplexEvent:PDatabaseComplexEvent;
   Loop:Integer;

Begin
   Command:=Uppercase(Command);
   Loop:=0;
   While Loop<fEventArray.Count do Begin
      If PDatabaseComplexEvent(fEventArray[Loop]).Command=Command then Begin
         PDatabaseComplexEvent(fEventArray[Loop]).EventProcedure:=EventProc;
         Exit;
      End
      Else Inc(Loop);
   End;
   New(PComplexEvent);
   PComplexEvent.Tag:=2;      // Denotes Event in fEventArray is a TComplexEvent!
   PComplexEvent.Command:=Command;
   PComplexEvent.EventProcedure:=EventProc;
   fEventArray.Add(PComplexEvent);
End;

Procedure TDXDatabaseServerCore.SetOnCommandUSER(value:DatabaseTSimpleEvent);
Begin
   fOnCommandUSER:=Value;
   AddSimpleEvent('USER',Value);
End;

Procedure TDXDatabaseServerCore.SetOnCommandPASS(value:DatabaseTSimpleEvent);
Begin
   fOnCommandPASS:=Value;
   AddSimpleEvent('PASS',Value);
End;

Procedure TDXDatabaseServerCore.SetOnCommandAUTH(value:DatabaseTComplexEvent);
Begin
   fOnCommandAUTH:=Value;
   AddComplexEvent('AUTH',Value);
End;

Procedure TDXDatabaseServerCore.SetOnCommandSETACTIVE(value:DatabaseTSimpleEvent);
Begin
   fOnCommandSETACTIVE:=Value;
   AddSimpleEvent('SETACTIVE',Value);
End;

Procedure TDXDatabaseServerCore.SetOnCommandISBOF(value:DatabaseTBasicEvent);
Begin
   fOnCommandISBOF:=Value;
   AddBasicEvent('ISBOF',Value);
End;

Procedure TDXDatabaseServerCore.SetOnCommandISEOF(value:DatabaseTBasicEvent);
Begin
   fOnCommandISEOF:=Value;

⌨️ 快捷键说明

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