Time of Update: 2018-12-07
1 概述 企業級應用的開發通常由一個團隊來完成,在整個軟體開發過程中的不同階段,會產生若干龐大複雜的分析與設計模型,團隊人員的增加和軟體版本的頻繁更新需要一個支援小組成員協同工作的理想的團隊開發解決方案。傳統的組態管理軟體如CVS,Rational ClearCase,Visuual Source Safe等較多側重於軟體代碼的版本控制和過程式控制制,配置和使用較為複雜,並且與模型設計工具分離,開發人員需要在不同工具之間切換,同時對模型的管理粒度較大,通常為模型層級。
Time of Update: 2018-12-07
function TForm15.CreateBand(View: TcxGridDBBandedTableView; BandCaption, ParentBandCaption: String): TcxGridBand;var band: TcxGridBand;begin Result := nil; if View = nil then exit; if ParentBandCaption <> '' then band :=
Time of Update: 2018-12-07
unit uBaseForm;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TPoint = record x: Integer; y: Integer; end; TMinMaxInfo = record ptReserved: TPoint; ptMaxSize: TPoint;
Time of Update: 2018-12-07
procedure TBaseForm.SetControlCaptions(Container: TWinControl);var I: Integer; sCaption, sNewCaption, sLanguage: string; T: TRttiType; P: TRttiProperty;begin if AppConfig.Language = lgOrigal then Exit; T :=
Time of Update: 2018-12-07
function ParamsToVariant(Params: TParams; Macro, Compatible: Boolean): Variant;var I: Integer; Tmp: Variant;begin if (Params.Count = 0) then Result := Null else begin Result := VarArrayCreate([0, Params.Count - 1], varVariant); for I :=
Time of Update: 2018-12-07
unit AdoconnectPool;interfaceuses Classes, Windows, SyncObjs, SysUtils, ADODB;type TADOConnectionPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; FConnectionString:
Time of Update: 2018-12-07
在需要把線程池活動線程全部停止時需要使用shutdown()方法,但當線程池的隊列很長時,即使使用了shutdown()方法,清除了當前活動線程,但隊列中的線程依然可以加入線程池,這樣一達不到停止全部線程的要求。清除全部線程的代碼如下protected ExecutorService executorService;public void stop() { ((ThreadPoolExecutor) executorService).getQueue().clear();
Time of Update: 2018-12-07
unit AdoconnectPool;interfaceuses Classes, Windows, SysUtils, ADODB, IniFiles, forms;type TADOConnectionPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; function
Time of Update: 2018-12-07
//新的DATASNAP已經支援TPARAMS作為遠程方法裡面的參數,會自動序列TPARAMS,無需手動序列它。//在此只是記錄一些JSON序列的用法,無實際意義unit uSerialize;interfaceuses System.SysUtils, Data.Win.ADODB, Data.DBXJSON, Data.DBXJSONReflect, System.Variants, Data.DB;type TSerialize = class public
Time of Update: 2018-12-07
//author: cxgunit DSServerContainer;interfaceuses SysUtils, Classes, IniFiles, Windows, Provider, DBClient, DSTCPServerTransport, DSServer, DSCommonServer, DB, ADODB, Generics.Collections, DSService, DBXDataSnap, DBXCommon, DSHTTPLayer,
Time of Update: 2018-12-07
unit AdoqueryPool;interfaceuses Classes, Windows, SysUtils, ADODB, forms;type TADOQueryPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; function CreateNewInstance(List:
Time of Update: 2018-12-07
xe datasnap自動支援TParams對象的序列,無需我們手動序列,真的很方便。遠程方法定義樣本:function TServerMethods1.GetData(sql: string; params: TParams): TDataSet;begin cds.Close; cds.CommandText := ''; cds.CommandText := sql; cds.Params.Clear; cds.Params := params; cds.Open;
Time of Update: 2018-12-07
unit DSPPool;interfaceuses Classes, Windows, SysUtils, Provider, forms;type TDSPPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; function CreateNewInstance(List:TList):
Time of Update: 2018-12-07
unit ProcPool;interfaceuses Classes, Windows, SysUtils, ADODB, forms;type TProcPool = class(TObject) private FObjList:TThreadList; FTimeout: Integer; FMaxCount: Integer; FSemaphore: Cardinal; function CreateNewInstance(List:TList):
Time of Update: 2018-12-07
unit uTestSvr;{$WARN SYMBOL_PLATFORM OFF}interfaceuses Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr, DBClient, MidServer_TLB, StdVcl, DB, ADODB, Provider, Variants, Forms, ThreadComLib;type TsvrDM =
Time of Update: 2018-12-07
unit uFun;interfaceuses SysUtils, Variants, db, adodb, Classes, EncdDecd;function ParametersToVariant(par:TParameters): OleVariant;procedure VariantToParameters(input:OleVariant;par:TParameters);function ParamsToVariant(par:TParams):
Time of Update: 2018-12-07
DLL直接返回對象時是有可能出錯的,這是因為程式和DLL用了不同的VCL,就是相當於一個介面的不同執行個體,所以只要是從DLL裡返回VCL相關的對象都會出錯。有兩種方法可以解決:1、在Controls單元的implementation前面聲明一個GetControlAtom方法{...}implementationfunction GetControlAtom: Pointer;begin Result :=
Time of Update: 2018-12-07
unit uDM;interface{$WARN SYMBOL_PLATFORM OFF}uses SysUtils, Classes, Controls,DB, DBClient, MConnect, SConnect, Dialogs, Variants, ADODB, IniFiles, Forms, MidServer_TLB, uFun;type TSvrRec = record // socketConnection's property Address:
Time of Update: 2018-12-07
unit uMain;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, TlHelp32, ExtCtrls, DB, DBClient, Grids, DBGrids, ADODB, Provider, AppEvnts;type TForm1 = class(TForm) DataSource1:
Time of Update: 2018-12-07
unit MidServer_TLB;// ************************************************************************ //// WARNING // -------