?? common.pas
字號(hào):
unit common;
interface
uses ExtCtrls, sysutils,forms,windows,messages,Classes,IniFiles,Registry,math,DateUtils,Graphics;
const
cFlashTime=5000; //報(bào)警信息窗口自動(dòng)停留時(shí)間
cLogLineCount=100; //顯示的日志總行數(shù)
type //讀系統(tǒng)參數(shù)。
TSTID =array[1..10] of char;
TSysInfo = record
CenterNO :string;
CenterName :string;
HideTaskBar :integer; //隱藏任務(wù)欄
RebootSystem :integer; //重新啟動(dòng)計(jì)算機(jī)
chatmode :boolean;
videoCtrlPort :integer; //矩陣控制服務(wù)器的網(wǎng)絡(luò)端口
videoCtrlIP :string; //矩陣控制服務(wù)器的網(wǎng)絡(luò)IP地址
cmsCtrlIP :string; //情報(bào)板控制服務(wù)器的網(wǎng)絡(luò)端口
cmsCtrlPort :integer; //情報(bào)板控制服務(wù)器的網(wǎng)絡(luò)IP地址
video1outID :string; //視頻采集卡1連接到矩陣的輸出端口
VideoOutCount :integer; //矩陣視頻輸出總數(shù)
UDPSERVER :string; //廣播數(shù)據(jù)的通訊計(jì)算機(jī)IP地址
UDPLPORT :INTEGER; //廣播數(shù)據(jù)的通訊計(jì)算機(jī)本地端口
UDPRPORT :integer; //廣播數(shù)據(jù)的通訊計(jì)算機(jī)遠(yuǎn)程端口
ETUDPIP :string;
ETUDPLPORT :INTEGER;
ETUDPRPORT :integer;
// CMSServerPORT :integer; //與大屏幕計(jì)算機(jī)聯(lián)接監(jiān)聽(tīng)端口
/// 交通流參數(shù)配置
cNormalLaneMinOcc :integer;
csuperLaneMinOcc :integer;
cNormalLaneMaxSpeed:integer;
csuperLaneMaxSpeed :integer;
cNormalLaneMaxOcc :integer;
csuperLaneMaxOcc :integer;
cNormalLaneMinSpeed:integer;
csuperLaneMinSpeed :integer;
cVisAlertValue1:integer;
cVisAlertValue2:integer;
DBServerHost :string; //數(shù)據(jù)庫(kù)服務(wù)器名
DatabaseName :string; //網(wǎng)絡(luò)數(shù)據(jù)庫(kù)名
Mode :string; //登錄方式
UserID :string; //數(shù)據(jù)庫(kù)登錄用戶
Password :string; //數(shù)據(jù)庫(kù)登錄密碼
end;
// Declaration from VC++ WINUSER.H
//
PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT;
KBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
procedure MsgToFile( Msg:String);
procedure SQLToFile( sqlstr:String);
//---消息框---
procedure Prompt(Msg : string);
procedure Alert(Msg : string);
function Confirm(Msg : string) : boolean;
function QueryInfo(Msg : string) : integer ;
function getFileExtName(FileName: string): string;
function CreateConnStr:string;
function CheckLocalSystemTime(TTime:TDatetime):boolean;
function SetPrivilege(sPrivilegeName: string; bEnabled: boolean ): boolean;
function WinExitInNT( iFlags : integer ) : boolean;
//數(shù)據(jù)格式轉(zhuǎn)化
function StrReverse(str:string):string;
function HexToDec(hexvalue: string): integer; //十六進(jìn)制到十進(jìn)制
function IntToBin(intValue: integer): string; //十進(jìn)制到二進(jìn)制
function DecToHexEx(i: int64;ResultLen:integer): string; //十進(jìn)制到十六進(jìn)制轉(zhuǎn)換
function StrTohexEx(sendstr:string):string; //字符串到十六進(jìn)制轉(zhuǎn)換
function BinToInt(Binstr: string): integer; //二進(jìn)制到十進(jìn)制
//情報(bào)板使用函數(shù)
function transferTColorToCCCStr(s:TColor):string;
function transferStrToTColor(s:string):TColor; //for情報(bào)板用
procedure StringToCharArray(str:string;var outstr: array of char) ;
function clearsubString(substr,str:string):string;
procedure splitToList(sourceStr,splitStr:String; s:TStrings);
function processCMSContent(sourceStr:TStrings;flag:integer):String;
function processCMSLibToFile(cmslib:string) :String;
procedure ListDirectoryPathAnyFile(FileList: Tstrings;DirectoryPath:string);
//系統(tǒng)熱鍵注冊(cè)與取消
function ProcessShiftState(ss:TShiftState):Cardinal;
function RegSysHotKey(Handle:THandle):boolean;
function UnRegSysHotKey(Handle:THandle):boolean;
//圖形化參數(shù)
function bmp_rotate(src:tbitmap;var Dst:tbitmap; angle:extended):boolean;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
var
gpath :string;
gUserName :string='Manager';
guserID :string='0000000000';
blogin :boolean =false;
cbIsMoveIcon :boolean =false;
bdrawDvcState :boolean =false; //是否顯示設(shè)備狀態(tài)
bShowWSAlertInfo :boolean =false; //是否顯示氣象報(bào)警數(shù)據(jù)
bShowVDAlertInfo :boolean =false; //是否顯示車(chē)檢報(bào)警數(shù)據(jù)
bVDLaneBlockAlert:boolean =false; //是否顯示道路杜塞聯(lián)動(dòng)報(bào)警
bVDLaneJamAlert :boolean =false; //是否顯示道路飽和聯(lián)動(dòng)報(bào)警
bVISLowAlert :boolean =false; //是否顯示能見(jiàn)度低聯(lián)動(dòng)報(bào)警
CmsFlashInt :Smallint =1000; //情報(bào)板模擬顯示時(shí)間間隔。毫秒
SqlString:string;
Myini:TInifile;
SysInfo:TSysInfo;
dHalfWidth ,dHalfHeight :integer;
FTaskbarRestart: Longword;
hhkNTKeyboard: HHOOK; // 鉤子句柄
// 主界面地圖顯示參數(shù)
THeight :integer= 80;
BHeight :integer= 140;
LWidth :integer= 14;
RWidth :integer= 14;
//系統(tǒng)設(shè)置熱鍵注冊(cè)值
HotKeyId: Integer;
Key: word;
ShiftState: Cardinal;
implementation
////////////////////////////////////////////////////////////////////////////////
/// 主要是記錄系統(tǒng)日志錯(cuò)誤 ///
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//*************************************
//反轉(zhuǎn)字符串
//*************************************
function StrReverse(str:string):string;
var
i:integer;
begin
Result:='';
for i:=Length(str) downto 1 do
Result:=Result+str[i];
end;
function HexToDec(hexvalue: string): integer;
begin
Result:=StrToInt('$'+hexvalue);
end;
//*************************************
//十進(jìn)制到16進(jìn)制轉(zhuǎn)換
//*************************************
function DecToHexEx(i: int64;ResultLen:integer): string;
var
divisor,j,tmpi:int64;
str:string;
begin
divisor:=i;
j:=i;
str:='';
while j<>0 do
begin
j:= j div 16;
tmpi:=divisor-j*16;
if tmpi<10 then
str:=str+IntToStr(tmpi)
else
str:=str+Chr(tmpi-10+65);
divisor:=j;
end;
Result:=str;
if Result='' then Result:='0';
Result:=StrReverse(Result);
Result:=Copy('00000000000000',1,ResultLen-Length(Result))+Result;
end;
////////////////////////////////////////////////////////////////////////////////
// 功能 :將字符串中的每一個(gè)字符轉(zhuǎn)換為16進(jìn)制的字符輸出
//
////////////////////////////////////////////////////////////////////////////////
function StrTohexEx(sendstr:string):string;
var i:integer;
res :string;
begin
res:='';
for i:=1 to length(sendstr) do
begin
res :=res + dectohexex(ord(sendstr[i]),2)+' ';
end;
result :=res;
end;
procedure MsgToFile( Msg:String);
var
F: Text;
LogFile:string;
begin
if not DirectoryExists(gpath +'LOGS') then
if not CreateDir(gpath +'LOGS') then raise Exception.Create('不能創(chuàng)建Log目錄 ');
LogFile:= gpath +'SystemError'+Formatdatetime('yyyymm',now)+'.Log';
{$I-}
AssignFile(F, LogFile);
if FileExists(LogFile) then
Append(F)
else
Rewrite(F);
Writeln(F, Formatdatetime('yyyy-mm-dd hh:nn:ss',now)+' Msg:='+Msg);
CloseFile(F);
{$I+}
end;
////////////////////////////////////////////////////////////////////////////////
/// 主要是記錄數(shù)據(jù)庫(kù)操作日志 ///
////////////////////////////////////////////////////////////////////////////////
procedure SQLToFile( sqlstr:String);
var
F: Text;
LogFile:string;
begin
if not DirectoryExists(gpath +'SQL') then
if not CreateDir(gpath +'SQL') then raise Exception.Create('不能創(chuàng)建SQL目錄 ');
LogFile:= gpath +'SQL\sql'+Formatdatetime('yyyymmdd',now)+'.sql';
{$I-}
AssignFile(F, LogFile);
if FileExists(LogFile) then
Append(F)
else
Rewrite(F);
// Writeln(F, '【'+Formatdatetime('yyyy-mm-dd hh:nn:ss',now)+'】');
Writeln(F, sqlstr);
CloseFile(F);
{$I+}
end;
//*************************************
//提示
//*************************************
procedure Prompt(Msg : string);
begin
Application.MessageBox(PChar(Msg), PChar('提示'), MB_ICONINFORMATION or Mb_OK);
end;
//*************************************
//警告
//*************************************
procedure Alert(Msg : string);
begin
Application.MessageBox(PChar(Msg), PChar('警告'), MB_ICONWARNING or Mb_OK);
end;
//*************************************
//詢問(wèn)
//*************************************
function Confirm(Msg : string) : boolean;
begin
Result := (Application.MessageBox(PChar(Msg), PChar('詢問(wèn)'), MB_ICONQUESTION or MB_OKCancel) = Id_Ok);
end;
//*************************************
//詢問(wèn)
//yes = 1 , no = 2 , cancel = 0
//*************************************
function QueryInfo(Msg : string) : integer ;
var i : integer ;
begin
i := Application.MessageBox(PChar(Msg), PChar('詢問(wèn)'), MB_ICONQUESTION or MB_YESNOCancel) ;
if i = IDYES then Result := 1
else if i =IDNO then Result := 2
else Result := 0 ;
end;
function getFileExtName(FileName: string): string;
var I:integer;
s:string;
begin
s:='';
for I:= length(Filename) downto 0 do
begin
if FileName[i]<>'.' then
s:=FileName[i]+s
else
break;
end;
result:=s;
end;
function CreateConnStr:string;
var
NetConnectStr:string;
begin
result:='';
NetConnectStr := 'Provider=SQLOLEDB.1';
if SysInfo.Mode='NTOnly' then
begin
NetConnectStr := NetConnectStr + 'Integrated Security=SSPI';
end;
NetConnectStr := NetConnectStr + ';Persist Security Info=true;User ID='+SysInfo.UserID+';Password='+SysInfo.Password;
NetConnectStr := NetConnectStr + ';Initial Catalog=' + SysInfo.DatabaseName;
NetConnectStr := NetConnectStr + ';Data Source=' + SysInfo.DBServerHost;
NetConnectStr := NetConnectStr + ';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096';
NetConnectStr := NetConnectStr + ';Use Encryption for Data=False;Tag with column collation when possible=False';
result := NetConnectStr;
end;
//設(shè)置本地系統(tǒng)時(shí)間
///////////////////////////////////////////////////////////////////////////////
function CheckLocalSystemTime(TTime:TDatetime):boolean;
var
systime :systemtime;
begin
result := false;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -