//▎============================================================▎//
//▎================① 扩展的字符串操作函数 ===================▎//
//▎============================================================▎//
//从文件中返回Ado连接字串。
function GetConnectionString(DataBaseName:string):string;
//返回服务器的机器名称.
function GetRemoteServerName:string;
function InStr(const sShort: string; const sLong: string): Boolean; {测试通过}
{* 判断s1是否包含在s2中}
function IntToStrEx(Value: Integer; Len: Integer; FillChar: Char = '0'): string; {测试通过}
{* 扩展整数转字符串函数 Example: IntToStrEx(1,5,'0'); 返回:"00001"}
function IntToStrSp(Value: Integer; SpLen: Integer = 3; Sp: Char = ','): string; {测试通过}
{* 带分隔符的整数-字符转换}
function ByteToBin(Value: Byte): string; {测试通过}
{* 字节转二进制串}
function StrRight(Str: string; Len: Integer): string; {测试通过}
{* 返回字符串右边的字符 Examples: StrRight('ABCEDFG',3); 返回:'DFG' }
function StrLeft(Str: string; Len: Integer): string; {测试通过}
{* 返回字符串左边的字符}
function Spc(Len: Integer): string; {测试通过}
{* 返回空格串}
function Replace(Str,s1,s2:string;CaseSensitive:Boolean):string; {测试通过}
{* 返回将指定字符s1用字符串s2替换后的字符串,可支持大小写敏感由CaseSensitive操作}
{example: replace('We know what we want','we','I',false) = 'I Know what I want'}
function Replicate(pcChar:Char; piCount:integer):string;
{在一个字符串中查找某个字符串的位置}
function StrNum(ShortStr:string;LongString:string):Integer; {测试通过}
{* 返回某个字符串中某个字符串中出现的次数}
function FindStr(ShortStr:String;LongStrIng:String):Integer; {测试通过}
{* 返回某个字符串中查找某个字符串的位置}
function SubStr(psInput:String; BeginPlace,CutLeng:Integer):String; {测试通过}
{* 返回从位置BeginPlace开始切取长度为CatLeng字符串}
function LeftStr(psInput:String; CutLeng:Integer):String; {测试通过}
{* 返回从左边第一为开始切取 CutLeng长度的字符串}
function RightStr(psInput:String; CutLeng:Integer):String; {测试通过}
{* 返回从右边第一为开始切取 CutLeng长度的字符串}
function PadLStr(psInput:String; piWidth:Integer; pcPadWith:Char):String; {测试通过}
{* 返回从psInput字符串左边开始用pcPadWith填充后总长度为PiWidth的字符串}
function PadRStr(psInput:String; piWidth:Integer; pcPadWith:Char):String; {测试通过}
{* 返回从psInput字符串右边开始用pcPadWith填充后总长度为PiWidth的字符串}
function PadCStr(psInput:String; piWidth:Integer; pcPadWith:Char):String; {测试通过}
{* 返回从psInput字符串两边开始用pcPadWith填充后总长度为PiWidth的字符串}
function ChrTran(psInput:String; pcSearch:Char; pcTranWith:Char):String; {测试通过}
{* 返回替换后字符串[替换单个字符] Examples: ChrTran('abCdEgdlkh','d','#'); 返回'abC#Eg#lkh'}
function StrTran(psInput:String; psSearch:String; psTranWith:String):String; {测试通过}
{* 返回替换后字符串[替换字符串] Examples: StrTran('aruyfbn','ruy','=====');; 返回'a=====fbn'}
function Stuff(psInput:String; piBeginPlace,piCount:Integer; psStuffWith:String):String;
{ *返回替换后字符串[替换字符串] Examples: Stuff('ABCDEFGHI',3,4,'12345');返回'AB12345GHI'}
procedure SwapStr(var s1, s2: string); {测试通过}
{* 交换字串}
function LinesToStr(const Lines: string): string; {测试通过}
{* 多行文本转单行(换行符转'\n')}
function StrToLines(const Str: string): string; {测试通过}
{* 单行文本转多行('\n'转换行符)}
function Encrypt(const S: String; Key: Word): String;
{* 字符串加密函数}
function Decrypt(const S: String; Key: Word): String;
{* 字符串解密函数}
function varIIF(aTest: Boolean; TrueValue, FalseValue: Variant): Variant;
function varToStr(const V: Variant): string;
{* VarIIF及VartoStr为变体函数}
function IsDigital(Value: string): boolean;
{功能说明:判断string是否全是数字}
function RandomStr(aLength : Longint) : String;
{随机字符串函数}
//▎============================================================▎//
//▎================② 扩展的日期时间操作函数 =================▎//
//▎============================================================▎//
function GetYear(Date: TDate): Integer; {测试通过}
{* 取日期年份分量}
function GetMonth(Date: TDate): Integer; {测试通过}
{* 取日期月份分量}
function GetDay(Date: TDate): Integer; {测试通过}
{* 取日期天数分量}
function GetHour(Time: TTime): Integer; {测试通过}
{* 取时间小时分量}
function GetMinute(Time: TTime): Integer; {测试通过}
{* 取时间分钟分量}
function GetSecond(Time: TTime): Integer; {测试通过}
{* 取时间秒分量}
function GetMSecond(Time: TTime): Integer; {测试通过}
{* 取时间毫秒分量}
function GetMonthLastDay(Cs_Year,Cs_Month:string):string;
{ *传入年、月,得到该月份最后一天}
function IsLeapYear( nYear: Integer ): Boolean;
{*/判断某年是否为闰年}
function MaxDateTime(const Values: array of TDateTime): TDateTime;
{//两个日期取较大的日期}
function MinDateTime(const Values: array of TDateTime): TDateTime;
{//两个日期取较小的日期}
function dateBeginOfMonth(D: TDateTime): TDateTime;
{//得到本月的第一天}
function DateEndOfMonth(D: TDateTime): TDateTime;
{//得到本月的最后一天}
function DateEndOfYear(D: TDateTime): TDateTime;
{//得到本年的最后一天}
function DaysBetween(Date1, Date2: TDateTime): integer;
{//得到两个日期相隔的天数}
//▎============================================================▎//
//▎===================③ 扩展的位操作函数 ====================▎//
//▎============================================================▎//
type
TByteBit = 0..7;
{* Byte类型位数范围}
TWordBit = 0..15;
{* Word类型位数范围}
TDWordBit = 0..31;
{* DWord类型位数范围}
procedure SetBit(var Value: Byte; Bit: TByteBit; IsSet: Boolean); overload;
{* 设置二进制位}
procedure SetBit(var Value: WORD; Bit: TWordBit; IsSet: Boolean); overload;
{* 设置二进制位}
procedure SetBit(var Value: DWORD; Bit: TDWordBit; IsSet: Boolean); overload;
{* 设置二进制位}
function GetBit(Value: Byte; Bit: TByteBit): Boolean; overload;
{* 取二进制位}
function GetBit(Value: WORD; Bit: TWordBit): Boolean; overload;
{* 取二进制位}
function GetBit(Value: DWORD; Bit: TDWordBit): Boolean; overload;
{* 取二进制位}
//▎============================================================▎//
//▎=================④扩展的文件及目录操作函数=================▎//
//▎============================================================▎//
function MoveFile(const sName, dName: string): Boolean; {测试通过}
{* 移动文件、目录,参数为源、目标名}
procedure FileProperties(const FName: string); {测试通过}
{* 打开文件属性窗口}
function CreatePath(path : string) : Boolean;
function OpenDialog(var FileName: string; Title: string; Filter: string;
Ext: string): Boolean;
{* 打开文件框}
function FormatPath(APath: string; Width: Integer): string; {测试通过}
{* 缩短显示不下的长路径名}
function GetRelativePath(Source, Dest: string): string; {测试通过}
{* 取两个目录的相对路径,注意串尾不能是'\'字符!}
procedure RunFile(const FName: string; Handle: THandle = 0;
const Param: string = ''); {测试通过}
{* 运行一个文件}
function WinExecAndWait32(FileName: string; Visibility: Integer = SW_NORMAL):
Integer; {测试通过}
{* 运行一个文件并等待其结束}
function AppPath: string; {测试通过}
{* 应用程序路径}
function GetDiskInfo(sFile : string; var nDiskFree,nDiskSize : Int64): boolean; {测试通过}
{* 取sFile 所在磁盘空间状态 }
function GetWindowsDir: string; {测试通过}
{* 取Windows系统目录}
function GetWinTempDir: string; {测试通过}
{* 取临时文件目录}
function AddDirSuffix(Dir: string): string; {测试通过}
{* 目录尾加'\'修正}
function MakePath(Dir: string): string; {测试通过}
{* 目录尾加'\'修正}
function IsFileInUse(FName: string): Boolean; {测试通过}
{* 判断文件是否正在使用}
function GetFileSize(FileName: string): Integer; {测试通过}
{* 取文件长度}
function SetFileDate(FileName: string; CreationTime, LastWriteTime, LastAccessTime:
TFileTime): Boolean; {测试通过}
{* 设置文件时间 Example: FileSetDate('c:\Test\Test1.exe',753160662); }
function GetFileDate(FileName: string; var CreationTime, LastWriteTime, LastAccessTime:
TFileTime): Boolean; {测试通过}
{* 取文件时间}
function FileTimeToLocalSystemTime(FTime: TFileTime): TSystemTime; {测试通过}
{* 文件时间转本地时间}
function LocalSystemTimeToFileTime(STime: TSystemTime): TFileTime; {测试通过}
{* 本地时间转文件时间}
function GetFileIcon(FileName: string; var Icon: TIcon): Boolean; {测试通过}
{* 取得与文件相关的图标,成功则返回True}
function CreateBakFile(FileName, Ext: string): Boolean; {测试通过}
{* 创建备份文件}
function Deltree(Dir: string): Boolean; {测试通过}
{* 删除整个目录}
function GetDirFiles(Dir: string): Integer; {测试通过}
{* 取文件夹文件数}
type
TFindCallBack = procedure(const FileName: string; const Info: TSearchRec;
var Abort: Boolean);
{* 查找指定目录下文件的回调函数}
procedure FindFile(const Path: string; const FileName: string = '*.*';
Proc: TFindCallBack = nil; bSub: Boolean = True; const bMsg: Boolean = True);
{* 查找指定目录下文件}
procedure FindFileList(Path:string;Filter,FileList:TStrings;ContainSubDir:Boolean; lb: TLabel=nil);
{ 功能说明:查找一个路径下的所有文件。
参数: path:路径,filter:文件扩展名过滤,FileList:文件列表, ContainSubDir:是否包含子目录}
function Txtline(const txt: string): integer;
{* 返回一文本文件的行数}
function Html2Txt(htmlfilename: string): string;
{* Html文件转化成文本文件}
function OpenWith(const FileName: string): Integer; {测试通过}
{* 文件打开方式}
//▎============================================================▎//
//▎====================⑤扩展的对话框函数======================▎//
//▎============================================================▎//
procedure InfoDlg(Mess: string; Caption: string = SCnInformation; Flags: Integer
= MB_OK + MB_ICONINFORMATION); {测试通过}
{* 显示提示窗口}
function InfoOk(Mess: string; Caption: string = SCnInformation): Boolean; {测试通过}
{* 显示提示确认窗口}
procedure ErrorDlg(Mess: string; Caption: string = SCnError); {测试通过}
{* 显示错误窗口}
procedure WarningDlg(Mess: string; Caption: string = SCnWarning); {测试通过}
{* 显示警告窗口}
function QueryDlg(Mess: string; Caption: string = SCnInformation): Boolean; {测试通过}
{* 显示查询是否窗口}
procedure SetWindowAnimate(Sender : TForm; IsSetAni : bool);
//▎============================================================▎//
//▎=====================⑥系统功能函数=========================▎//
//▎============================================================▎//
procedure MoveMouseIntoControl(AWinControl: TControl); {测试通过}
{* 移动鼠标到控件}
function DynamicResolution(x, y: WORD): Boolean; {测试通过}
{* 动态设置分辨率}
procedure StayOnTop(Handle: HWND; OnTop: Boolean); {测试通过}
{* 窗口最上方显示}
procedure SetHidden(Hide: Boolean); {测试通过}
{* 设置程序是否出现在任务栏}
procedure SetTaskBarVisible(Visible: Boolean); {测试通过}
{* 设置任务栏是否可见}
procedure SetDesktopVisible(Visible: Boolean); {测试通过}
{* 设置桌面是否可见}
procedure BeginWait; {测试通过}
{* 显示等待光标}
procedure EndWait; {测试通过}
{* 结束等待光标}
function CheckWindows9598NT: string; {测试通过}
{* 检测是否Win95/98/NT平台}
function GetOSInfo : String; {测试通过}
{* 取得当前操作平台是 Windows 95/98 还是NT}
function GetCurrentUserName : string;
{*获取当前Windows登录名的用户}
function GetRegistryOrg_User(UserKeyType:string):string;
{*获取当前注册的单位及用户名称}
function GetSysVersion:string;
{*//获取操作系统版本号}
function WinBootMode:string;
{//Windows启动模式}
type
PShutType = (UPowerOff, UShutdown, UReboot, ULogOff, USuspend, UHibernate);
procedure WinShutDown(ShutWinType:PShutType; PForce:Boolean);
{//Windows ShutDown等}
//▎============================================================▎//
//▎=====================⑦硬件功能函数=========================▎//
//▎============================================================▎//
function GetClientGUID:string;
{ 功能描述:在本机上得到一个GUID.去掉两端的大括号和中间的横线
返回值:去掉两端的大括号和中间的横线的一个GUID
适用范围:windows
}
function SoundCardExist: Boolean; {测试通过}
{* 声卡是否存在}
function GetDiskSerial(DiskChar: Char): string;
{* 获取磁盘序列号}
function DiskReady(Root: string) : Boolean;
{*检查磁盘准备是否就绪}
procedure WritePortB( wPort : Word; bValue : Byte );
{* 写串口}
function ReadPortB( wPort : Word ) : Byte;
{*读串口}
function CPUSpeed: Double;
{* 获知当前机器CPU的速率(MHz)}
type
TCPUID = array[1..4] of Longint;
function GetCPUID : TCPUID; assembler; register;
{*获取CPU的标识ID号*}
function GetMemoryTotalPhys : Dword;
{*获取计算机的物理内存}
type
TDriveState = (DSNODISK, DSUNFORMATTEDDISK, DSEMPTYDISK, DSDISK_WITHFILES);
function DriveState (driveletter: Char) : TDriveState;
{* 检查驱动器A中磁盘是否有效}
//▎============================================================▎//
//▎=====================⑧网络功能函数=========================▎//
//▎============================================================▎//
function GetComputerName:string;
{* 获取网络计算机名称}
function GetHostIP:string;
{* 获取计算机的IP地址}
function NetUserChangePassword(Domain:PWideChar; UserName:PWideChar; OldPassword:PWideChar; NewPassword:PWideChar): LongInt; stdcall; external 'netapi32.dll' name 'NetUserChangePassword';
{* // 运行平台:Windows NT/2000/XP
{* // Windows 95/98/Me平台:可以用该函数修改用户的Windows登录密码}
//▎============================================================▎//
//▎=====================⑨汉字拼音功能函数=====================▎//
//▎============================================================▎//
function GetHzPy(const AHzStr: string): string; {测试通过}
{* 取汉字的拼音}
function HowManyChineseChar(Const s:String):Integer;
{* 判断一个字符串中有多少各汉字}
//▎============================================================▎//
//▎===================⑩数据库功能函数及过程===================▎//
//▎============================================================▎//
{function PackDbDbf(Var StatusMsg: String): Boolean;}
{* 物理删除数据库(Db,Dbf)中的数据[着了删除标记的记录]}
procedure RepairDb(DbName: string);
{* 修复Access表}
function CreateODBCCfgInRegistry(ODBCSourceName:WideString;ServerName, DataBaseDescription:String):boolean;
{* 通过注册表创建ODBC配置[创建在系统DSN页下]}
function ADOConnectSysBase(Const Adocon:TadoConnection):boolean;
{* 用Ado连接SysBase数据库函数}
function ADOConnectLocalDB(Const Adocon:TadoConnection;Const Dbname,DbServerName:string;ValidateMode:Integer):boolean;
{* 用Ado连接数据库函数}
function ADOODBCConnectLocalDB(Const Adocon:TadoConnection;Const Dbname:string;ValidateMode:Integer):boolean;
{* 用Ado与ODBC共同连接数据库函数}
function CreatTable(LpDataBaseName,LpTableName,LpSentence:string):Boolean;
{* //建立新表}
function AddField(LpFieldName:string; LpDataType: TFieldType; LpSize: Word):string;
{*//在表中添加字段}
function KillField(LpFieldName:string):String;
{* //在表中删除字段}
function AlterTableExec(LpDataBaseName,LpSentence:string):Boolean;
{* //修改表结构}
function GetSQLSentence(LpTableName,LpSQLsentence:string): string;
{* /修改、添加、删除表结构时的SQL句体}
//▎============================================================▎//
//▎======================⑾进制函数及过程======================▎//
//▎============================================================▎//
function StrToHex(AStr: string): string;
{* 字符转化成十六进制}
function HexToStr(AStr: string): string;
{* 十六进制转化成字符}
function TransChar(AChar: Char): Integer;
//▎============================================================▎//
//▎=====================⑿其它函数及过程=======================▎//
//▎============================================================▎//
function TrimInt(Value, Min, Max: Integer): Integer; overload; {测试通过}
{* 输出限制在Min..Max之间}
function IntToByte(Value: Integer): Byte; overload; {测试通过}
{* 输出限制在0..255之间}
function InBound(Value: Integer; Min, Max: Integer): Boolean; {测试通过}
{* 判断整数Value是否在Min和Max之间}
procedure CnSwap(var A, B: Byte); overload;
{* 交换两个数}
procedure CnSwap(var A, B: Integer); overload;
{* 交换两个数}
procedure CnSwap(var A, B: Single); overload;
{* 交换两个数}
procedure CnSwap(var A, B: Double); overload;
{* 交换两个数}
function RectEqu(Rect1, Rect2: TRect): Boolean;
{* 比较两个Rect是否相等}
procedure DeRect(Rect: TRect; var x, y, Width, Height: Integer);
{* 分解一个TRect为左上角坐标x, y和宽度Width、高度Height}
function EnSize(cx, cy: Integer): TSize;
{* 返回一个TSize类型}
function RectWidth(Rect: TRect): Integer;
{* 计算TRect的宽度}
function RectHeight(Rect: TRect): Integer;
{* 计算TRect的高度}
procedure Delay(const uDelay: DWORD); {测试通过}
{* 延时}
procedure BeepEx(const Freq: WORD = 1200; const Delay: WORD = 1); {Win9X下测试通过}
{* 只能在Win9X下让喇叭发声}
procedure ShowLastError; {测试通过}
{* 显示Win32 Api运行结果信息}
function writeFontStyle(FS: TFontStyles; inifile: string; write: boolean):string;
{* 将字体Font.Style写入INI文件}
function readFontStyle(inifile: string): TFontStyles;
{* 从INI文件中读取字体Font.Style文件}
//function ReadCursorPos(SourceMemo: TMemo): TPoint;
function ReadCursorPos(SourceMemo: TMemo): string;
{* 取得TMemo 控件当前光标的行和列信息到Tpoint中}
function CanUndo(AMemo: TMemo): Boolean;
{* 检查Tmemo控件能否Undo}
procedure Undo(Amemo: Tmemo);
{*实现Undo功能}
procedure AutoListDisplay(ACombox:TComboBox);
{* 实现ComBoBox自动下拉}
function UpperMoney(small:real):string;
{* 小写金额转换为大写 }
function Myrandom(Num: Integer): integer;
{*利用系统时间产生随机数)}
procedure OpenIME(ImeName: string);
{*打开输入法}
procedure CloseIME;
{*关闭输入法}
procedure ToChinese(hWindows: THandle; bChinese: boolean);
{*打开中文输入法}
//数据备份
procedure BackUpData(LpBackDispMessTitle:String);
procedure ImageLoadGif(Picture: TPicture; filename: string);
procedure ImageLoadJpg(Picture: TPicture; filename: string);