Time of Update: 2018-12-07
外掛程式架構,所有的外掛程式及主EXE工程設定中都要選擇BUILD WITH RUNTIME PACKAGE選項,然後指定需要哪些運行時包(包括VCL內建的,其它三方的控制項)。在程式開發和發布的時候都要把這些運行時包(.bpl)放在主exe能夠搜尋到的目錄中。 rtl;vcl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;
Time of Update: 2018-12-07
Delphi中使用ListView和TreeView的Item中的Data可能被忽略的記憶體流失問題,使用了Data作為指標的資料,在刪除項目時,這些記憶體將不會釋放,可以在OnDeletion事件中加入Dispose(Item.Data); 語句來實現釋放。 Delphi中大家在使用 ListView和TreeView時,一般都會使用到Item的Data屬性來儲存大家自己的內部資料,這個Data的聲明如下:property Data:
Time of Update: 2018-12-07
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ADODB,DBClient,db;type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end;var Form1:
Time of Update: 2018-12-07
function ConnRemoteSvr(cn:TSQLConnection;const hostname,UserName,password:string; const port:Integer):Boolean;begin try cn.Close; cn.DriverName := 'DataSnap'; cn.LoginPrompt :=False; Cn.ConnectionName := 'DataSnapCONNECTION'; cn.Params.Clear;
Time of Update: 2018-12-07
標準的Socket的應用程式架構如下:Server方: Socket()[ 建立一個Socket]--Bind()[ 同伺服器位址邦定 ]--Listen() --Accept()--block wait--read()[接受訊息,在windows平台中,方法為send(TCP),或者是sendto(UDP)]--處理服務要求--Write()[發送訊息,在windows平台中,方法為send(TCP), 或者為sendto(UDP)。Client方相對簡單:Socket()--Connect(
Time of Update: 2018-12-07
//先貼幾個實用函數//16 進位 轉 整形,這個在訊息解碼的時候經常要用到Function HexToInt(sTemp : String) : Integer ;VarV, i : Integer ;BeginHexToInt := 0 ;If sTemp = '' Then Exit ;If (sTemp[1]='0') And ((sTemp[2]='x') Or (sTemp[2]='X')) ThensTemp := Copy(sTemp, 3, Length(sTemp)-2) ;
Time of Update: 2018-12-07
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBAccess, Uni, MemDS, UniProvider, InterBaseUniProvider;type TForm1 = class(TForm) UniConnTest:
Time of Update: 2018-12-07
{author:cxg斷網自動檢查並提示,自動重連}unit ClientTestConnected;interfaceuses SysUtils, Classes, SqlExpr,uNetCommon;type TWaitThread = class(TThread) private { Private declarations } fNetConnect:Boolean; FCheckInterval: Integer; FMsg: string;
Time of Update: 2018-12-07
1.組件對象的序列化從TCOMPONENT繼承下來的組件對象序列化都簡單,因為它本身支援流化,通過流化也就達到了序列化組件對象的目的。TReader和TWriter都只支援Tcomponent流化,除非你自己寫個TReader和TWriter,就有可能支援TPersiten的流化. function ComponentToString(Component: TComponent): string; var BinStream:TMemoryStream;
Time of Update: 2018-12-07
大家都知道TClientDataSet的Delta屬性儲存資料集的變化,但是Delta是OleVariant類型的屬性,這樣如果用Delphi寫Webservice,就有需要把它轉成XML,特別是其他語言也要用這個Webservice的時候,因為如果Delta能和XML相互轉換,Delta包的結構就是透明的了。而TClientDataSet卻沒有提供DeltaXML這樣的屬性,之前在網上找了一下,發現網上的都是把Delta賦給另一個TClientDataSet的Data,然後再通過XMLData
Time of Update: 2018-12-07
對連接上來的連接,進行檢測,以防止客戶端異常關閉,或線路異常斷開,而服務器不知道,得到一個半連接這種情況。當然可以在協議裡加一個心跳包,然後服務器端定時檢測,過一段時間就去輪訓一次,看哪些連接超過多少時間沒有反應。超時就關閉。但這樣有點不爽,要自己寫代碼來完成。還要鎖定連接列表,代價挺大的。記得以前在網上看到可以用 TCP 的 KeepAlive
Time of Update: 2018-12-07
湘潭真武山陳氏
Time of Update: 2018-12-07
類似代碼:CoInitialize(nil) ; //CoInitialize was not called Qry := TADOQuery.Create(nil) ; try // MUST USE OWN CONNECTION // Qry.Connection := Form1.ADOConnection1; Qry.ConnectionString := ConnStr; Qry.CursorLocation := clUseServer;
Time of Update: 2018-12-07
帶均衡策略的伺服器叢集 如今,伺服器必須具備提供大量並發訪問服務的能力,其處理能力和I/O能力已經成為提供服務的瓶頸。如果客戶的增多導致通訊 量超出了伺服器能承受的範圍,那麼其結果必然是——宕機。顯然,單台伺服器有限的效能不可能解決這個問題,一台普通伺服器的 處理能力只能達到每秒幾萬個到幾十萬個請求,無法在一秒鐘內處理上百萬個甚至更多的請求。但若能將10台這樣的伺服器組成一個
Time of Update: 2018-12-07
所有的負載平衡產品都需要一定的負載平衡策略來實現,負載平衡策略也被稱為負載平衡演算法。目前,最常用的負載平衡演算法主要有三種:輪循(Round-Robin)、最小串連數(Least Connections First)和快速響應優先(Faster Response Precedence)。² 輪循演算法,就是將來自網路的請求依次分配給叢集中的伺服器進行處理。²
Time of Update: 2018-12-07
//我們在寫C/S管理系統時經常是根據使用者的許可權來相應禁止一些菜單//在實踐時,我發現使用動態方法建立菜單有可能對軟體被破解起到一點小的作用//因為實現起來,不是很難,所以寫出來分享一下//我們在菜單的事件中,利用功能表項目的TAG值來判定是點了那一項//首先,用一張資料表來存所有使用者的菜單內容,格式如下//ID int//image int //-1是指ImageIndex的值,即無表徵圖//caption varchar 20//layer
Time of Update: 2018-12-07
object FormChoose: TFormChoose Left = 331 Top = 269 BorderStyle = bsDialog Caption = #36873#25321 ClientHeight = 242 ClientWidth = 439 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name =
Time of Update: 2018-12-07
核心價值:精準報價、清晰庫存專門為個體商家量身打造的管理軟體,他突破性的採用了用戶端本地業務管理與互連網搜尋及應用相結合的方式,以貨品價格搜尋和庫存管理為基礎,統一管理個體工商戶的報價、庫存、往來及收支,解決個體工商戶日常經營中一直存在的商品太多無法記住價格及庫存的問題,完美實現“精準報價、清晰庫存”的核心價值;同時,系統中創新引入“行業產品庫”,真正實現資訊化系統免初始化的客戶理念。 產品特點:商品資料智能添加初次使用智慧記的使用者無需錄入大量的貨品資料,可實現貨品資料的大量匯入,匯入方式可以
Time of Update: 2018-12-07
對於Query一類的SQL查詢控制項來說,Macro宏替換功能真是一個好東西。比如,您可以設定一個叫ZTName的宏來代表當前帳套名稱,這樣所有需要添加帳套WHERE條件的地方,都可以使用這個宏來代替。其實不僅UniDAC提供了宏替換的功能,就算是十年以前的RxLib系列控制項,也已經提供了類似的功能。但網上一直沒有說明怎麼使用這個功能,關於怎麼應用這個功能就是找不到了。下面我就以一個簡單的例子來說明一下使用方法:1、首先在UniConnection中找到Macros屬性,並在裡面添加Proje
Time of Update: 2018-12-07
發送結構體:TMyData = record id:Integer; Name:Array[0..20] of Char; Sex:Array[0..10] of Char; Age:Byte; Address:Array[0..256] of Char; UpdateTime:double; end;//發送結構體:procedure TForm2.Button2Click(Sender: TObject);var SendDat