Delphi常用函数库

unit SkyPublic;

interface

uses

Windows,SysUtils,Classes,Controls,Dialogs,ShellApi,Menus,StdCtrls,

registry,Forms,Graphics,Math,DateUtils;

type

TQuarter = 1..4;

TChinaNumFormat = (cnfBig,cnfSmall,cnfArab);

TChinaBigFormat = (cbfFull,cbfBlank);

TNumChar=‘0‘..‘9‘;

TStringArray = array of string;

TCharSet = set of Char;

TFontRecord = record

CharSet:Byte;

Color:Integer;

Name:string;

Size:Integer;

Style:Byte;

PixelsPerInch:Integer;

Pitch:0..2;

Height:Integer;

end;

const

CR = #13;

LF = #10;

NumCharSet=[‘0‘..‘9‘];

NameCharSet = [‘A‘..‘Z‘,‘a‘..‘z‘,‘0‘..‘9‘,‘_‘];

var

MimaFileName:string;

PositionMima:array [0..2] of Integer = (91,92,93);

{*****************************类操作******************************}

{显示类及其继承信息函数}

function ShowClassName(Obj:TObject):string;

procedure GetClassInfos(Obj:TComponent;StrList:TStringList);

procedure SaveClassInfos(Obj:TComponent;FileName:string);

{*****************************文件操作******************************}

{建文件夹}

function CreateDirs(APath:string):Boolean;

{拷贝}

function FileCopy(From, Dest: string;S:Integer=0;Dialog:Boolean=True):Boolean;

{移动}

procedure FileMove(From, Dest: string);

{删除}

procedure FileDelete(ADirName: string);

{更名}

function FileRename(From, Dest: string):Boolean;

{***************************控件操作********************************}

{TStrings,在Combobox中添加或者删除一个字符串}

procedure StringsOperation(ComboBox:TComboBox;IsAdd:Boolean;No:string=‘‘);

{***************************日期操作********************************}

{返回头尾日期}

procedure GetHeadTailDate(const SelfDate:TDate;var HeadDate,TailDate:TDate);overload;

procedure GetHeadTailDate(const Year,Month:Integer;var HeadDate,TailDate:TDate);overload;

{返回一月有多少天}

function ReturnHowDay(const AYear,AMonth:word):Word;

{返回季度头尾日期}

procedure GetQuarter(AYear:Word;AQuarter:TQuarter;var HeadDate,TailDate:TDate);overload;

procedure GetQuarter(SelfDate:TDate;var HeadDate,TailDate:TDate);overload;

procedure GetAccYearMonth(ADate:TDateTime;var Y,M:Word);

{**************************字符串操作*******************************}

{**************************string Function*******************************}

{得到1个字符在字符串中的个数}

function GetCharNum(const Ch:Char; const Str: string):Integer;

{Ini字符串和String字符串互相转换}

function IniStrToStr(const Str: string): string;

function StrToIniStr(const Str: string): string;

{给字符串加一个‘\‘}

function AddBackSlash(const S: string): string;

{减少字符串的长度}

procedure DecStrLen(var S: string; DecBy: Integer);

{返回有回车换行的字符串Position位置所在的字符串}

function GetCurLine(const S: string; Position: Integer): string;

{返回给定字符串的内存分配大小}

function GetStrAllocSize(const S: string): Longint;

{ 得到字符串的基准数 }

function GetStrRefCount(const S: string): Longint;

{清除A中指定的字符}

function KillChars(const S: string; A: array of Char; CaseSensitive: Boolean):string;

{ 返回子字符串在字符串中最后一个位置 }

function LastPos(const SubStr, S: string): Integer;

{ 设置字符串的实际长度 }

procedure RealizeLength(var S: string);

{ 移去字符串末尾的‘\‘}

function RemoveBackSlash(const S: string): string;

{移去字符串空格}

function RemoveSpaces(const S: string): string;

{字符串取反}

function ReverseStr(const S: string): string;

{除去前后回车}

function TrimEnterLeft(S:string):string;

function TrimEnterRight(S:string):string;

function TrimEnter(S:string):string;

{******************************PChar Function***************************}

procedure StrGetCurLine(StartPos, CurPos: PChar; TotalLen: integer;

var LineStart: PChar; var LineLen: integer);

{ 返回最后一个指定字符串及其以后的字符 }

function StrLastPos(Str1, Str2: PChar): PChar;

{截取第一个指定字符串及其以后的字符,大小写不敏感}

function StrIPos(Str1, Str2: PChar): PChar;

{截取第一个指定字符及其以后的字符,大小写不敏感}

function StrIScan(Str: PChar; Chr: Char): PChar;

{ 字符串取反 }

procedure StrReverse(P: PChar);

{返回中文大写数字}

function GetChinaNum(Num:TNumChar;ChinaNumFormat:TChinaNumFormat=cnfBig):string;

{将数字变成中文大写}

function FloatToChinaBig(Num:Double;ChinaBigFormat:TChinaBigFormat=cbfFull;Blanks:Byte=0):string;

function FloatToChnStr(Value: Real; ClearZero: Boolean; full:Boolean=False): String;

{将数字变成英文}

function FloatToEnglish(Num:Double):string;

{日期用英文}

function DateToEng(ADate:TDate;th:Boolean=False):string;

{取得SQL日期字符串等}

function DateToSQLDateStr(ADate:TDateTime):string;

function StrToSQLDateStr(Str:string):string;

function TimeToSQLTimeStr(ATime:TDateTime):string;

function StrToSQLTimeStr(Str:string):string;

function DateTimeToSQLDateTimeStr(ADateTime:TDateTime):string;

function StrToSQLDateTimeStr(Str:string):string;

{返回有逗号的金额字符串}

function FloatToMoneyStr(Num:Double;const HasSymbol:Boolean=False):string;

{Bool与字符串的转换}

function StrToBool(const Str:string):Boolean;

function BoolToStr(const Bool:Boolean):string;

{判断是否日期等}

function IsDate(const CheckString:string):Boolean;

function IsDateTime(const CheckString:string):Boolean;

function IsTime(const CheckString:string):Boolean;

function IsInteger(const CheckString:string):Boolean;

function IsFloat(const CheckString:string):Boolean;

{多字符串ShowMessage}

procedure ShowMessages(const Strings:array of string);

{新名称}

function NameToNewName(const Str:string):string;

{FloatTo%百分比}

function FloatToRate(Num:Double;Pos:Word):string;

{字体存贮}

procedure FontRecordToFont(FontRecord:TFontRecord;Font:TFont);

function FontToFontRecord(Font:TFont):TFontRecord;

function FontStylesToInt(FontStyles:TFontStyles):Byte;

function IntToFontStyles(FontInteger:Byte):TFontStyles;

{****************************数学*********************************}

{n次方}

function Power(X,Y:Extended):Extended;

{N的阶层}

function Order(N: Word): Extended;//(用Pascal写的N的阶层)

{得到小数点位数}

function GetFloatPointNum(Fl:Double):Integer;

{小数点位数,四舍五入法}

function FloatToNewFloat(AValue:Double):Double;

function FloatToNewFloatN(AValue:Double;N:Word=4):Double;

{******************************系统操作*******************************}

{关闭计算机}

function WinExit (iFlags: integer) : Boolean;

{防止开启多个应用程序}

procedure PreventMany(Name:string);

{得到应用程序的路径}

function GetApplicationDir(AppName:string):string;

{加到启动}

function RegAddToRun(Name,Value:string):Boolean;

procedure DeleteOneItem(Name:string);

{得到Delphi路径}

function GetDelphiDir:string;

{得到系统路径}

function GetSystemDir:string;

{得到windows路径}

function GetWindowsDir:string;

{得到计算机名}

function GetComputerNameD:string;

{设置计算机名}

function SetComputerNameD(Name:string):Boolean;

{执行一个文件}

function ExecuteFile(const FileName, Params, DefaultDir: string;

ShowCmd: Integer): THandle;

implementation

{显示类及其继承信息函数}

function ShowClassName(Obj:TObject):string;

var

Str:string;

K:TClass;

begin

K:=Obj.ClassType;

while not K.ClassNameIs(‘TObject‘) do

begin

Str:=K.ClassParent.ClassName+‘——>‘+Str;

K:=K.ClassParent;

end;

Result:=Str+Obj.ClassName;

end;

procedure GetClassInfos(Obj:TComponent;StrList:TStringList);

var

i:Integer;

S:string;

begin

StrList.Clear;

for I:=0 to Obj.ComponentCount-1 do

begin

S:=‘类名:‘+Obj.Components.ClassName+‘ ‘+‘名称:‘+Obj.Components.Name;

StrList.Add(S);

end;

end;

procedure SaveClassInfos(Obj:TComponent;FileName:string);

var

i:Integer;

S:string;

StrList:TStringList;

begin

StrList:=TStringList.Create;

try

for I:=0 to Obj.ComponentCount-1 do

begin

S:=‘类名:‘+Obj.Components.ClassName+‘ ‘+‘名称:‘+Obj.Components.Name;

StrList.Add(S);

end;

StrList.SaveToFile(FileName);

finally

StrList.Free;

end;

end;

{建文件夹}

function  CreateDirs(APath:string):Boolean;

var

CurrentPath:string;

UsePath:string;

begin

CurrentPath:=GetCurrentDir;

UsePath:=Trim(APath);

if Pos(‘\‘,UsePath)=1 then

begin

UsePath:=Copy(CurrentPath,1,2)+UsePath;

end

else if Pos(‘:‘,UsePath)<>2 then UsePath:=CurrentPath+‘\‘+UsePath;

Result:=ForceDirectories(UsePath);

end;

{拷贝}{0:如果有同文件名则改名。1:如果同文件名则覆盖。}

function FileCopy(From, Dest: string;S:Integer=0;Dialog:Boolean=True):Boolean;

var

T: TSHFileOpStruct;

FromDir:PChar;

ToDir:PChar;

begin

GetMem(FromDir,Length(From)+2);

try

GetMem(ToDir,Length(Dest)+2);

try

FillChar(FromDir^,Length(From)+2,0);

FillChar(ToDir^,Length(Dest)+2,0);

StrCopy(FromDir,PChar(From));

StrCopy(ToDir,PChar(Dest));

with T do

begin

Wnd    :=0;

wFunc  :=FO_COPY;

pFrom  :=FromDir;

pTo    :=ToDir;

if S=0 then

fFlags :=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION

else fFlags :=FOF_NOCONFIRMATION;

if not Dialog then

fFlags:=fFlags or FOF_SILENT;

fAnyOperationsAborted:=False;

hNameMappings:=nil;

lpszProgressTitle:=nil;

if SHFileOperation(T)=0 then

Result:=True

else Result:=False;

end;

finally

FreeMem(ToDir,Length(Dest)+2);

end;

finally

FreeMem(FromDir,Length(From)+2);

end;

end;

{移动}

procedure FileMove(From, Dest: string);

var

T: TSHFileOpStruct;

FromDir:PChar;

ToDir:PChar;

begin

GetMem(FromDir,Length(From)+2);

try

GetMem(ToDir,Length(Dest)+2);

try

FillChar(FromDir^,Length(From)+2,0);

FillChar(ToDir^,Length(Dest)+2,0);

StrCopy(FromDir,PChar(From));

StrCopy(ToDir,PChar(Dest));

with T do

begin

Wnd    :=0;

wFunc  :=FO_MOVE;

pFrom  :=FromDir;

pTo    :=ToDir;

fFlags :=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;

fAnyOperationsAborted:=False;

hNameMappings:=nil;

lpszProgressTitle:=nil;

if SHFileOperation(T)<>0 then

raise Exception.Create(‘移动文件操作不成功!‘);

end;

finally

FreeMem(ToDir,Length(Dest)+2);

end;

finally

FreeMem(FromDir,Length(From)+2);

end;

end;

{删除}

procedure FileDelete(ADirName: string);

var

SHFileOpStruct:TSHFileOpStruct;

DirName:PChar;

begin

Getmem(DirName,Length(ADirName)+2);

try

FillChar(Dirname^,Length(ADirName)+2,0);

StrCopy(DirName,PChar(ADirName));

with SHFileOpStruct do

begin

Wnd:=0;

wFunc:=FO_DELETE;

pFrom:=DirName;

pTo:=nil;

fFlags :=FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;

fAnyOperationsAborted:=False;

hNameMappings:=nil;

lpszProgressTitle:=nil;

end;

if SHfileOperation(SHFileOpStruct)<>0 then

raise Exception.Create(‘删除文件操作不成功!‘);

finally

FreeMem(DirName,Length(ADirName)+2);

end;

end;

{更名}

function FileRename(From, Dest: string):Boolean;

//var

//  T: TSHFileOpStruct;

//  FromDir:PChar;

//  ToDir:PChar;

//  FromDirectory,DestDirectory:string;

begin

Dest:=ExtractFileName(Dest);

Result:=RenameFile(From,Dest);

end;

{得到应用程序的路径}

function GetApplicationDir(AppName:string):string;

var

AppPath:string;

reg:TRegistry;

Name:string;

ExtName:string;

begin

ExtName:=Copy(AppName,Length(AppName)-3,4);

if ExtName[1]<>‘.‘ then AppName:=AppName+‘.exe‘;

Name:=‘Software\Microsoft\Windows\CurrentVersion\App Paths\‘+AppName;

reg:=TRegistry.Create;

try

reg.RootKey:=HKEY_LOCAL_MACHINE;

reg.OpenKey(Name,False);

AppPath:=reg.ReadString(‘path‘);

AppPath:=AddBackSlash(AppPath);

reg.CloseKey;

finally

reg.Free;

end;

Result:=AppPath;

end;

{加到启动}

function RegAddToRun(Name,Value:string):Boolean;

var

Reg:TRegistry;

Values:string;

begin

Result:=False;

Reg:=TRegistry.Create;

try

Reg.RootKey:=HKEY_LOCAL_MACHINE;

Reg.OpenKey(‘software\microsoft\windows\currentversion\run\‘,False);

Values:=Reg.ReadString(Name);

if Values<>Value then

begin

Reg.WriteString(Name,Value);

Result:=True;

end;

finally

Reg.Free;

end;

end;

procedure DeleteOneItem(Name:string);

var

Reg:TRegistry;

begin

Reg:=TRegistry.Create;

try

Reg.RootKey:=HKEY_LOCAL_MACHINE;

Reg.OpenKey(‘software\microsoft\windows\currentversion\run\‘,False);

if Reg.ValueExists(Name) then

Reg.DeleteValue(Name)

finally

Reg.Free;

end;

end;

{得到delphi路径}

function GetDelphiDir:string;

begin

Result:=GetApplicationDir(‘Delphi32.exe‘);

end;

{得到系统路径}

function GetSystemDir:string;

var

Buffer: array[0..MAX_PATH - 1] of Char;

begin

SetString(Result, Buffer, GetSystemDirectory(Buffer,SizeOf(Buffer)));

end;

{得到windows路径}

function GetWindowsDir:string;

var

Buffer: array[0..MAX_PATH - 1] of Char;

begin

SetString(Result, Buffer, GetWindowsDirectory(Buffer,SizeOf(Buffer)));

end;

{得到计算机名}

function GetComputerNameD:string;

var

Buffer: array[0..MAX_COMPUTERNAME_LENGTH] of Char;

BSize:Cardinal;

begin

BSize:=SizeOf(Buffer);

if  GetComputerName(Buffer,BSize) then

begin

Result:=Buffer;

end

else Result:=‘‘;

end;

{设置计算机名}

function SetComputerNameD(Name:string):Boolean;

begin

if Length(Name)>MAX_COMPUTERNAME_LENGTH then

Name:=Copy(Name,1,MAX_COMPUTERNAME_LENGTH);

Result:=False;

if SetComputerName(PChar(Name)) then

Result:=True;

end;

function ExecuteFile(const FileName, Params, DefaultDir: string;

ShowCmd: Integer): THandle;

var

zFileName, zParams, zDir: array[0..120] of Char;

begin

Result := ShellExecute(Application.MainForm.Handle, nil,

StrPCopy(zFileName, FileName), StrPCopy(zParams, Params),

StrPCopy(zDir, DefaultDir), ShowCmd);

end;

{返回头尾日期}

procedure GetHeadTailDate(const SelfDate:TDate;var HeadDate,TailDate:TDate);overload;

const

AHeadDay=1;

var

AYear,AMonth,ATailDay,ASelfDay:Word;

begin

DecodeDate(SelfDate,AYear,AMonth,ASelfDay);

ATailDay:=ReturnHowDay(AYear,AMonth);

HeadDate:=EncodeDate(AYear,AMonth,AHeadDay);

TailDate:=EncodeDate(AYear,AMonth,ATailDay);

end;

procedure GetHeadTailDate(const Year,Month:Integer;var HeadDate,TailDate:TDate);overload;

const

HeadDay=1;

var

TailDay:Word;

begin

TailDay:=ReturnHowDay(Year,Month);

HeadDate:=EncodeDate(Year,Month,HeadDay);

TailDate:=EncodeDate(Year,Month,TailDay);

end;

{返回一月有多少天}

function ReturnHowDay(const AYear,AMonth:word):Word;

begin

case AMonth of

1,3,5,7,8,10,12:Result:=31;

4,6,9,11:Result:=30;

2:begin

if IsLeapYear(AYear) then

Result:=29

else Result:=28;

end;

else Result:=0;

end;

end;

{返回季度头尾日期}

procedure GetQuarter(AYear:Word;AQuarter:TQuarter;var HeadDate,TailDate:TDate);overload;

var

AHeadDate,ATailDate:TDate;

HeadMonth,TailMonth:Word;

begin

HeadMonth:=1;

TailMonth:=1;

case AQuarter of

1:begin

HeadMonth:=1;

TailMonth:=3;

end;

2:begin

HeadMonth:=4;

TailMonth:=6;

end;

3:begin

HeadMonth:=7;

TailMonth:=9;

end;

4:begin

HeadMonth:=10;

TailMonth:=12;

end;

end;

GetHeadTailDate(AYear,HeadMonth,AHeadDate,ATailDate);

HeadDate:=AHeadDate;

GetHeadTailDate(AYear,TailMonth,AHeadDate,ATailDate);

TailDate:=ATailDate;

end;

procedure GetQuarter(SelfDate:TDate;var HeadDate,TailDate:TDate);overload;

var

AYear,AMonth,ADay:Word;

AQuarter:TQuarter;

begin

AQuarter:=1;

DecodeDate(SelfDate,AYear,AMonth,ADay);

case AMonth of

1..3:AQuarter:=1;

4..6:AQuarter:=2;

7..9:AQuarter:=3;

10..12:AQuarter:=4;

end;

GetQuarter(AYear,AQuarter,HeadDate,TailDate);

end;

procedure GetAccYearMonth(ADate:TDateTime;var Y,M:Word);

var

D:Word;

begin

DecodeDate(ADate,Y,M,D);

if M=1 then

begin

Y:=Y-1;

M:=12;

end

else begin

M:=M-1;

end;

end;

{  *** Pascal string functions *** }

function GetCharNum(const Ch:Char; const Str: string):Integer;

var

S:PChar;

begin

S:=PChar(Str);

Result:=0;

while S^<>#0 do

begin

if S^=Ch then

Inc(Result);

Inc(S);

end;

end;

function IniStrToStr(const Str: string): string;

var

Buffer: array[0..4095] of Char;

B, S: PChar;

begin

if Length(Str) > SizeOf(Buffer) then

raise Exception.Create(‘String to read from an INI file‘);

S := PChar(Str);

B := Buffer;

while S^ <> #0 do

if (S[0] = ‘\‘) and (S[1] = ‘n‘) then

begin

B^ := #13;

Inc(B);

B^ := #10;

Inc(B);

Inc(S);

Inc(S);

end

else

begin

B^ := S^;

Inc(B);

Inc(S);

end;

B^ := #0;

Result := Buffer;

end;

function StrToIniStr(const Str: string): string;

var

Buffer: array[0..4095] of Char;

B, S: PChar;

begin

if Length(Str) > SizeOf(Buffer) then

raise Exception.Create(‘String to large to save in INI file‘);

S := PChar(Str);

B := Buffer;

while S^ <> #0 do

case S^ of

#13, #10:

begin

if (S^ = #13) and (S[1] = #10) then Inc(S)

else if (S^ = #10) and (S[1] = #13) then Inc(S);

B^ := ‘\‘;

Inc(B);

B^ := ‘n‘;

Inc(B);

Inc(S);

end;

else

B^ := S^;

Inc(B);

Inc(S);

end;

B^ := #0;

Result := Buffer;

end;

function AddBackSlash(const S: string): string;

begin

Result := S;

if S<>‘‘ then

begin

if Result[Length(Result)] <> ‘\‘ then  // if last char isn‘t a backslash...

Result := Result + ‘\‘;              // make it so

end;

end;

procedure DecStrLen(var S: string; DecBy: Integer);

begin

SetLength(S, Length(S) - DecBy);       // decrement string length by DecBy

end;

function GetCurLine(const S: string; Position: Integer): string;

var

ResP: PChar;

ResLen: integer;

begin

StrGetCurLine(PChar(S), PChar(Longint(S) + Position - 1), Length(S), ResP,

ResLen);

SetString(Result, ResP, ResLen);

end;

function GetStrAllocSize(const S: string): Longint;

var

P: ^Longint;

begin

P := Pointer(S);                        // pointer to string structure

dec(P, 3);                              // 12-byte negative offset

Result := P^ and not $80000000 shr 1;   // ignore bits 0 and 31

end;

function GetStrRefCount(const S: string): Longint;

var

P: ^Longint;

begin

P := Pointer(S);                        // pointer to string structure

dec(P, 2);                              // 8-byte negative offset

Result := P^;

end;

function KillChars(const S: string; A: array of Char; CaseSensitive: Boolean):

string;

var

CharSet: TCharSet;

i, count: integer;

begin

CharSet := [];                         // empty character set

for i := Low(A) to High(A) do begin

Include(CharSet, A);              // fill set with array items

if not CaseSensitive then begin      // if not case sensitive, then also

if A in [‘A‘..‘Z‘] then

Include(CharSet, Chr(Ord(A) + 32))  // include lower cased or

else if A in [‘a‘..‘z‘] then

Include(CharSet, Chr(Ord(A) - 32))  // include upper cased character

end;

end;

SetLength(Result, Length(S));          // set length to prevent realloc

count := 0;

for i := 1 to Length(S) do begin       // iterate over string S

if not (S in CharSet) then begin  // add good chars to Result

Result[count + 1] := S;

inc(Count);                        // keep track of num chars copies

end;

end;

SetLength(Result, count);              // set length to num chars copied

end;

function LastPos(const SubStr, S: string): Integer;

var

FoundStr: PChar;

begin

Result := 0;

FoundStr := StrLastPos(PChar(S), PChar(SubStr));

if FoundStr <> nil then

Result := (Cardinal(Length(S)) - StrLen(FoundStr)) + 1;

end;

procedure RealizeLength(var S: string);

begin

SetLength(S, StrLen(PChar(S)));

end;

function RemoveBackSlash(const S: string): string;

begin

Result := S;

if Result[Length(Result)] = ‘\‘ then   // if last character is a backslash...

DecStrLen(Result, 1);                // decrement string length

end;

function RemoveSpaces(const S: string): string;

begin

Result := KillChars(S, [‘ ‘], True);

end;

function ReverseStr(const S: string): string;

begin

Result := S;

StrReverse(PChar(Result));

end;

{除去前后回车}

function TrimEnterLeft(S:string):string;

begin

S:=ReverseStr(S);

S:=TrimEnterRight(S);

S:=ReverseStr(S);

Result:=S;

end;

function TrimEnterRight(S:string):string;

begin

while ((Length(S)>1)and((S[Length(S)]=#10)and(S[Length(S)-1]=#13)))or

((Length(S)>1)and((S[Length(S)]=#13)and(S[Length(S)-1]=#10))) do

begin

S:=Copy(S,1,Length(S)-2);

end;

Result:=S;

end;

function TrimEnter(S:string):string;

begin

S:=TrimE

{将数字变成中文大写}

function FloatToChinaBig(Num:Double;ChinaBigFormat:TChinaBigFormat=cbfFull;Blanks:Byte=0):string;

var

Str:string;

AgainstStr:string;

NumStr:string;

i,j:Integer;

AllNumLength:Integer;

TempStr:string;

begin

if Blanks>15 then Blanks:=17;

NumStr:=CurrToStrF(Num,ffFixed,2);

Delete(NumStr,Pos(‘.‘,NumStr),1);

AllNumLength:=Length(NumStr);

if Blanks<=AllNumLength then Blanks:=AllNumLength

else begin

TempStr:=‘‘;

for i:=1 to Blanks-AllNumLength do

begin

TempStr:=TempStr+‘0‘;

end;

NumStr:=TempStr+NumStr;

end;

NumStr:=ReverseStr(NumStr);

Str:=FormatFloat(‘0佰0拾0万0仟0佰0拾0亿0仟0佰0拾0万0仟0佰0拾0圆.0角0分‘,Num);

Delete(Str,Pos(‘.‘,Str),1);

AgainstStr:=ReverseStr(Str);

AgainstStr:=Copy(AgainstStr,1,3*Blanks);

if ChinaBigFormat=cbfBlank then

begin

AgainstStr:=‘‘;

for i:=1 to Blanks do

AgainstStr:=AgainstStr+‘  ‘+NumStr;

end;

j:=0;

for i:=1 to Blanks do

begin

Insert(ReverseStr(GetChinaNum(AgainstStr[3*i+2*j])),AgainstStr,3*i+2*j);

Inc(j);

end;

j:=0;

for i:=1 to Blanks do

begin

Delete(AgainstStr,5*i-j,1);

Inc(j);

end;

Result:=ReverseStr(AgainstStr);

end;

function FloatToChnStr(Value: Real; ClearZero: Boolean; full:Boolean=False): String;

const

ChnUnit: array[0..13] of string = (‘分‘, ‘角‘, ‘元‘, ‘拾‘, ‘佰‘, ‘仟‘, ‘万‘, ‘拾‘, ‘佰‘, ‘仟‘, ‘亿‘, ‘拾‘, ‘佰‘, ‘仟‘);

ChnNum : array[0..9]  of string = (‘零‘, ‘壹‘,‘贰‘, ‘叁‘, ‘肆‘, ‘伍‘, ‘陆‘, ‘柒‘, ‘捌‘, ‘玖‘);

var

I: Integer;

StrValue, StrNum: String;

ValueLen: Integer;

begin

if Value <= 0 then

begin

Result := ‘输入参数应大于零。‘;

Exit;

end;

value:=RoundTo(Value,-2);

StrValue := IntToStr(Round(Value * 100));

ValueLen := Length(StrValue);

Result := ‘‘;

for I := 1 to ValueLen do

begin

StrNum := StrValue;

Result := Result + ChnNum[StrToInt(StrNum)] + ChnUnit[ValueLen - I];

end;

if ClearZero then

begin

Result := StringReplace(Result, ‘零分‘, ‘‘,   [rfReplaceAll]);

if Frac(Value)>0.009999 then

Result := StringReplace(Result, ‘零角‘, ‘零‘,   [rfReplaceAll])

else

Result := StringReplace(Result, ‘零角‘, ‘‘,   [rfReplaceAll]);

Result := StringReplace(Result, ‘零元‘, ‘元‘, [rfReplaceAll]);

Result := StringReplace(Result, ‘零拾‘, ‘零‘,   [rfReplaceAll]);

Result := StringReplace(Result, ‘零佰‘, ‘零‘,   [rfReplaceAll]);

Result := StringReplace(Result, ‘零仟‘, ‘零‘,   [rfReplaceAll]);

Result := StringReplace(Result, ‘零万‘, ‘万‘, [rfReplaceAll]);

Result := StringReplace(Result, ‘零零‘, ‘零‘,   [rfReplaceAll]);

Result := StringReplace(Result, ‘零零‘, ‘零‘,   [rfReplaceAll]);

end;

if full then

begin

if Frac(Value)<0.009999 then

Result:=Result+‘整‘;

end;

end;

{将数字变成英文}

function FloatToEnglish(Num:Double):string;

var

StrList:TStringList;

i:Integer;

StrTemp1,StrTemp2:String;

NumArray:array [0..3] of Integer;

NumCount:Integer;

ResultStr:string;

Tmp,Tmp1,Tmp2,TmpXiao:Integer;

function OneNumToEng(Num:Integer;TWO:Integer=0):string;

begin

if Two=0 then

begin

case Num of

0:Result:=‘ZERO‘;

1:Result:=‘ONE‘;

2:Result:=‘TWO‘;

3:Result:=‘THREE‘;

4:Result:=‘FOUR‘;

5:Result:=‘FIVE‘;

6:Result:=‘SIX‘;

7:Result:=‘SEVEN‘;

8:Result:=‘EIGHT‘;

9:Result:=‘NINE‘;

end;

end

else if Two=1 then

begin

case Num of

1:Result:=‘TEN‘;

2:Result:=‘TWENTY‘;

3:Result:=‘THIRTY‘;

4:Result:=‘FORTY‘;

5:Result:=‘FIFTY‘;

6:Result:=‘SIXTY‘;

7:Result:=‘SEVENTY‘;

8:Result:=‘EIGHTY‘;

9:Result:=‘NINETY‘;

end;

end

else if Two=2 then

begin

case Num of

0:Result:=‘‘;

1:Result:=‘ONE‘;

2:Result:=‘TWO‘;

3:Result:=‘THREE‘;

4:Result:=‘FOUR‘;

5:Result:=‘FIVE‘;

6:Result:=‘SIX‘;

7:Result:=‘SEVEN‘;

8:Result:=‘EIGHT‘;

9:Result:=‘NINE‘;

end;

end;

end;

function TwoNumToEng(Num:Integer):string;

var

NStr:string;

One:string;

Two:string;

S:string;

begin

NStr:=IntToStr(Num);

if Num<10 then

Result:=OneNumToEng(Num)

else begin

case Num of

10:Result:=‘TEN‘;

11:Result:=‘ELEVEN‘;

12:Result:=‘TWELVE‘;

13:Result:=‘THIRTEEN‘;

14:Result:=‘FOURTEEN‘;

15:Result:=‘FIFTEEN‘;

16:Result:=‘SIXTEEN‘;

17:Result:=‘SEVENTEEN‘;

18:Result:=‘EIGHTEEN‘;

19:Result:=‘NINETEEN‘;

20:Result:=‘TWENTY‘;

30:Result:=‘THIRTY‘;

40:Result:=‘FORTY‘;

50:Result:=‘FIFTY‘;

60:Result:=‘SIXTY‘;

70:Result:=‘SEVENTY‘;

80:Result:=‘EIGHTY‘;

90:Result:=‘NINETY‘;

else begin

One:=NStr[1];

Two:=NStr[2];

S:=OneNumToEng(StrToInt(One),1);

S:=S+‘-‘+OneNumToEng(StrToInt(Two),2);

Result:=S;

end;

end;

end;

end;

function ThreeNumToEng(Num:Integer;Hasand:Boolean=False):string;

var

Nstr:string;

S:string;

H:Integer;

R:Integer;

begin

Nstr:=IntToStr(Num);

if Num>=100 then

begin

H:=Num div 100;

R:=Num mod 100;

if R=0 then

begin

S:=OneNumToEng(H)+‘ ‘+‘HUNDRED‘;

end

else begin

S:=OneNumToEng(H)+‘ ‘+‘HUNDRED‘+‘ AND ‘+TwoNumToEng(R);

end;

end

else begin

S:=TwoNumToEng(Num);

end;

if Hasand then

begin

if S=‘ZERO‘ then

Result:=‘‘ else

Result:=‘AND ‘+S

end

else Result:=S;

end;

begin

{0               nought;zero;O

1               one

2               two

3               three

4               four

5               five

6               six

7               seven

8               eight

9               nine

10              ten

11              eleven

12              twelve

13              thirteen

14              fourteen

15              fifteen

16              sixteen

17              seventeen

18              eighteen

19              nineteen

20              twenty

21              twenty-one

22              twenty-two

23              twenty-three

30              thirty

32              thirty-two

40              forty

50              fifty

60              sixty

70              seventy

80              eighty

90              ninety

100             one hundred

101             one hundred and one

156             one hundred and fifty-six

192             one hundred and ninety-two

200             two hundred

300             three hundred

400             four hundred

500             five hundred

600             six hundred

700             seven hundred

800             eight hundred

900             nine hundred

1,000           one thousand

1,001           one thousand and one

1,300           thirteen hundred;one thousand and three hundred

2,000           two thousand

2,034           two thousand and thirty-four

6,502           six thousand five hundred and two

38,000          thirty-eight thousand

45,672          forty-five thousand six hundred and seventy-two

500,000         five hundred thousand

1,000,000       one million

3,123,400       three million,one hundred and twenty-three thousand and four hundred

8,000,000       eight million

47,000,000      forty-seven million

900,000,000     nine hundred million

1,000,000,000   a milliard,one milliard(美作:a billion,one billion)

1,050,000,000   one billion and fifty million

10,000,000,000  ten billion

200,000,000,000 two hundred billion

1,000,000,000,000       a billion,one billion(美作:a trillion,one trillion)

6,000,000,000,000       six million million}

if Num>2000000000 then Raise Exception.Create(‘数值太大‘);

StrList:=TStringList.Create;

try

Tmp:=Trunc(Num);

TmpXiao:=Round((Num-Tmp)*100);

//    ShowMessage(IntToStr(Tmpxiao));

Tmp1:=Tmp div 1000;

Tmp2:=Tmp mod 1000;

while Tmp1>0 do

begin

Tmp:=Tmp1;

StrList.Add(IntToStr(Tmp2));

Tmp1:=Tmp div 1000;

Tmp2:=Tmp mod 1000;

end;

StrList.Add(IntToStr(Tmp2));

NumCount:=StrList.Count;

for i:=0 to NumCount-1 do

begin

NumArray:=StrToInt(StrList);

end;

case NumCount of

1:ResultStr:=ThreeNumToEng(NumArray[0]);

2:ResultStr:=ThreeNumToEng(NumArray[1])+‘ THOUSAND ‘+ThreeNumToEng(NumArray[0],True);

3:begin

StrTemp1:=ThreeNumToEng(NumArray[1],True);

if StrTemp1<>‘‘ then

ResultStr:=ThreeNumToEng(NumArray[2])+‘ MILLION ‘+

StrTemp1+‘ THOUSAND ‘+

ThreeNumToEng(NumArray[0],True)

else ResultStr:=ThreeNumToEng(NumArray[2])+‘ MILLION ‘+

ThreeNumToEng(NumArray[0],True);

end;

4:begin

StrTemp2:=ThreeNumToEng(NumArray[3])+‘ BILLION ‘;

StrTemp1:=ThreeNumToEng(NumArray[2],True);

if StrTemp1<>‘‘ then

StrTemp2:=StrTemp2+StrTemp1;

StrTemp1:=ThreeNumToEng(NumArray[1],True);

if StrTemp1<>‘‘ then

StrTemp2:=StrTemp2+StrTemp1;

ResultStr:=StrTemp2+ThreeNumToEng(NumArray[0],True);

end;

end;

StrTemp1:=ThreeNumToEng(TmpXiao,True);

if StrTemp1<>‘‘ then

ResultStr:=ResultStr+‘ AND CENTS ‘+Copy(StrTemp1,5,Length(StrTemp1)-4);

Result:=ResultStr;

finally

StrList.Free;

end;

end;

{日期用英文}

function DateToEng(ADate:TDate;th:Boolean=False):string;

var

AYear,AMonth,ADay:Word;

SYear,SMonth,SDay:string;

begin

DecodeDate(ADate,AYear,AMonth,ADay);

case AMonth of

1:SMonth:=‘JAN‘;

2:SMonth:=‘FEB‘;

3:SMonth:=‘MAR‘;

4:SMonth:=‘APR‘;

5:SMonth:=‘MAY‘;

6:SMonth:=‘JUN‘;

7:SMonth:=‘JUL‘;

8:SMonth:=‘AUG‘;

9:SMonth:=‘SEP‘;

10:SMonth:=‘OCT‘;

11:SMonth:=‘NOV‘;

12:SMonth:=‘DEC‘;

end;

SDay:=IntToStr(ADay);

if th then

begin

case ADay of

1,21,31:SDay:=SDay+‘st‘;

2,22,23:SDay:=SDay+‘nd‘;

3:SDay:=SDay+‘rd‘;

4..20:SDay:=SDay+‘th‘;

24..30:SDay:=SDay+‘st‘;

end;

end;

SYear:=IntToStr(AYear);

Result:=SMonth+‘ ‘+SDay+‘,‘+SYear;

end;

{字符串取反}

{function GetAgainstStr(Str:string):string;

var

i,StrLength:Integer;

TmpStr:string;

begin

StrLength:=Length(Str);

SetLength(TmpStr,StrLength);

for i:=1 to StrLength do TmpStr:=Str[StrLength+1-i];

Result:=TmpStr;

end;}

{取得SQL日期字符串}

function DateToSQLDateStr(ADate:TDateTime):string;

begin

Result:=FormatDateTime(‘mm"/"dd"/"yyyy‘,ADate);

end;

function StrToSQLDateStr(Str:string):string;

var

StrDate:TDateTime;

begin

StrDate:=StrToDateTime(Str);

Result:=DateToSQLDateStr(StrDate);

end;

function TimeToSQLTimeStr(ATime:TDateTime):string;

begin

Result:=FormatDateTime(‘hh":"nn":"ss‘,ATime);

end;

function StrToSQLTimeStr(Str:string):string;

var

StrTime:TDateTime;

begin

StrTime:=StrToDateTime(Str);

Result:=TimeToSQLTimeStr(StrTime);

end;

function DateTimeToSQLDateTimeStr(ADateTime:TDateTime):string;

begin

Result:=FormatDateTime(‘mm"/"dd"/"yyyy hh":"nn":"ss‘,ADateTime);

end;

function StrToSQLDateTimeStr(Str:string):string;

var

StrDateTime:TDateTime;

begin

StrDateTime:=StrToDateTime(Str);

Result:=DateTimeToSQLDateTimeStr(StrDateTime);

end;

{返回有逗号的金额字符串}

function FloatToMoneyStr(Num:Double;const HasSymbol:Boolean=False):string;

begin

if HasSymbol then Result:=CurrToStrF(Num,ffCurrency,2)

else Result:=CurrToStrF(Num,ffNumber,2);

end;

{Bool与字符串的转换}

function StrToBool(const Str:string):Boolean;

begin

if CompareText(‘True‘,Str)=0 then Result:=True

else Result:=False;

end;

function BoolToStr(const Bool:Boolean):string;

begin

if Bool then Result:=‘True‘

else Result:=‘False‘;

end;

{判断是否日期等}

type

TDateOrder = (doMDY, doDMY, doYMD);

function CurrentYear: Word;

var

SystemTime: TSystemTime;

begin

GetLocalTime(SystemTime);

Result := SystemTime.wYear;

end;

function DoEncodeTime(Hour, Min, Sec, MSec: Word; var Time: TDateTime): Boolean;

begin

Result := False;

if (Hour < 24) and (Min < 60) and (Sec < 60) and (MSec < 1000) then

begin

Time := (Hour * 3600000 + Min * 60000 + Sec * 1000 + MSec) / MSecsPerDay;

Result := True;

end;

end;

function DoEncodeDate(Year, Month, Day: Word; var Date: TDateTime): Boolean;

var

I: Integer;

DayTable: PDayTable;

begin

Result := False;

DayTable := @MonthDays[IsLeapYear(Year)];

if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and

(Day >= 1) and (Day <= DayTable^[Month]) then

begin

for I := 1 to Month - 1 do Inc(Day, DayTable^);

I := Year - 1;

Date := I * 365 + I div 4 - I div 100 + I div 400 + Day - DateDelta;

Result := True;

end;

end;

procedure ScanBlanks(const S: string; var Pos: Integer);

var

I: Integer;

begin

I := Pos;

while (I <= Length(S)) and (S = ‘ ‘) do Inc(I);

Pos := I;

end;

function ScanNumber(const S: string; var Pos: Integer;

var Number: Word; var CharCount: Byte): Boolean;

var

I: Integer;

N: Word;

begin

Result := False;

CharCount := 0;

ScanBlanks(S, Pos);

I := Pos;

N := 0;

while (I <= Length(S)) and (S in [‘0‘..‘9‘]) and (N < 1000) do

begin

N := N * 10 + (Ord(S) - Ord(‘0‘));

Inc(I);

end;

if I > Pos then

begin

CharCount := I - Pos;

Pos := I;

Number := N;

Result := True;

end;

end;

function ScanString(const S: string; var Pos: Integer;

const Symbol: string): Boolean;

begin

Result := False;

if Symbol <> ‘‘ then

begin

ScanBlanks(S, Pos);

if AnsiCompareText(Symbol, Copy(S, Pos, Length(Symbol))) = 0 then

begin

Inc(Pos, Length(Symbol));

Result := True;

end;

end;

end;

function ScanChar(const S: string; var Pos: Integer; Ch: Char): Boolean;

begin

Result := False;

ScanBlanks(S, Pos);

if (Pos <= Length(S)) and (S[Pos] = Ch) then

begin

Inc(Pos);

Result := True;

end;

end;

function GetDateOrder(const DateFormat: string): TDateOrder;

var

I: Integer;

begin

Result := doMDY;

I := 1;

while I <= Length(DateFormat) do

begin

case Chr(Ord(DateFormat) and $DF) of

‘E‘: Result := doYMD;

‘Y‘: Result := doYMD;

‘M‘: Result := doMDY;

‘D‘: Result := doDMY;

else

Inc(I);

Continue;

end;

Exit;

end;

Result := doMDY;

end;

procedure ScanToNumber(const S: string; var Pos: Integer);

begin

while (Pos <= Length(S)) and not (S[Pos] in [‘0‘..‘9‘]) do

begin

if S[Pos] in LeadBytes then Inc(Pos);

Inc(Pos);

end;

end;

function GetEraYearOffset(const Name: string): Integer;

var

I: Integer;

begin

Result := 0;

for I := Low(EraNames) to High(EraNames) do

begin

if EraNames = ‘‘ then Break;

if AnsiStrPos(PChar(EraNames), PChar(Name)) <> nil then

begin

Result := EraYearOffsets;

Exit;

end;

end;

end;

function ScanDate(const S: string; var Pos: Integer;

var Date: TDateTime): Boolean;

var

DateOrder: TDateOrder;

N1, N2, N3, Y, M, D: Word;

L1, L2, L3, YearLen: Byte;

EraName : string;

EraYearOffset: Integer;

CenturyBase: Integer;

function EraToYear(Year: Integer): Integer;

begin

if SysLocale.PriLangID = LANG_KOREAN then

begin

if Year <= 99 then

Inc(Year, (CurrentYear + Abs(EraYearOffset)) div 100 * 100);

if EraYearOffset > 0 then

EraYearOffset := -EraYearOffset;

end

else

Dec(EraYearOffset);

Result := Year + EraYearOffset;

end;

begin

Y := 0;

M := 0;

D := 0;

YearLen := 0;

Result := False;

DateOrder := GetDateOrder(ShortDateFormat);

EraYearOffset := 0;

if ShortDateFormat[1] = ‘g‘ then  // skip over prefix text

begin

ScanToNumber(S, Pos);

EraName := Trim(Copy(S, 1, Pos-1));

EraYearOffset := GetEraYearOffset(EraName);

end

else

if AnsiPos(‘e‘, ShortDateFormat) > 0 then

EraYearOffset := EraYearOffsets[1];

if not (ScanNumber(S, Pos, N1, L1) and ScanChar(S, Pos, DateSeparator) and

ScanNumber(S, Pos, N2, L2)) then Exit;

if ScanChar(S, Pos, DateSeparator) then

begin

if not ScanNumber(S, Pos, N3, L3) then Exit;

case DateOrder of

doMDY: begin Y := N3; YearLen := L3; M := N1; D := N2; end;

doDMY: begin Y := N3; YearLen := L3; M := N2; D := N1; end;

doYMD: begin Y := N1; YearLen := L1; M := N2; D := N3; end;

end;

if EraYearOffset > 0 then

Y := EraToYear(Y)

else if (YearLen <= 2) then

begin

CenturyBase := CurrentYear - TwoDigitYearCenturyWindow;

Inc(Y, CenturyBase div 100 * 100);

if (TwoDigitYearCenturyWindow > 0) and (Y < CenturyBase) then

Inc(Y, 100);

end;

end else

begin

Y := CurrentYear;

if DateOrder = doDMY then

begin

D := N1; M := N2;

end else

begin

M := N1; D := N2;

end;

end;

ScanChar(S, Pos, DateSeparator);

ScanBlanks(S, Pos);

if SysLocale.FarEast and (System.Pos(‘ddd‘, ShortDateFormat) <> 0) then

begin     // ignore trailing text

if ShortTimeFormat[1] in [‘0‘..‘9‘] then  // stop at time digit

ScanToNumber(S, Pos)

else  // stop at time prefix

repeat

while (Pos <= Length(S)) and (S[Pos] <> ‘ ‘) do Inc(Pos);

ScanBlanks(S, Pos);

until (Pos > Length(S)) or

(AnsiCompareText(TimeAMString, Copy(S, Pos, Length(TimeAMString))) = 0) or

(AnsiCompareText(TimePMString, Copy(S, Pos, Length(TimePMString))) = 0);

end;

Result := DoEncodeDate(Y, M, D, Date);

end;

function ScanTime(const S: string; var Pos: Integer;

var Time: TDateTime): Boolean;

var

BaseHour: Integer;

Hour, Min, Sec, MSec: Word;

Junk: Byte;

begin

Result := False;

BaseHour := -1;

if ScanString(S, Pos, TimeAMString) or ScanString(S, Pos, ‘AM‘) then

BaseHour := 0

else if ScanString(S, Pos, TimePMString) or ScanString(S, Pos, ‘PM‘) then

BaseHour := 12;

if BaseHour >= 0 then ScanBlanks(S, Pos);

if not ScanNumber(S, Pos, Hour, Junk) then Exit;

Min := 0;

if ScanChar(S, Pos, TimeSeparator) then

if not ScanNumber(S, Pos, Min, Junk) then Exit;

Sec := 0;

if ScanChar(S, Pos, TimeSeparator) then

if not ScanNumber(S, Pos, Sec, Junk) then Exit;

MSec := 0;

if ScanChar(S, Pos, DecimalSeparator) then

if not ScanNumber(S, Pos, MSec, Junk) then Exit;

if BaseHour < 0 then

if ScanString(S, Pos, TimeAMString) or ScanString(S, Pos, ‘AM‘) then

BaseHour := 0

else

if ScanString(S, Pos, TimePMString) or ScanString(S, Pos, ‘PM‘) then

BaseHour := 12;

if BaseHour >= 0 then

begin

if (Hour = 0) or (Hour > 12) then Exit;

if Hour = 12 then Hour := 0;

Inc(Hour, BaseHour);

end;

ScanBlanks(S, Pos);

Result := DoEncodeTime(Hour, Min, Sec, MSec, Time);

end;

function IsDate(const CheckString:string):Boolean;

var

Pos: Integer;

Date:TDateTime;

begin

Pos := 1;

Result:=ScanDate(CheckString, Pos, Date) or (Pos <= Length(CheckString));

end;

function IsDateTime(const CheckString:string):Boolean;

var

Pos,Pos1: Integer;

Date, Time: TDateTime;

DateTime:TDateTime;

begin

Pos := 1;

Pos1:=1;

Time := 0;

Result:=ScanDate(CheckString,Pos,Date) or not ((Pos > Length(CheckString)) or

ScanTime(CheckString, Pos, Time)) or

(ScanTime(CheckString, Pos1, DateTime) or (Pos1 <= Length(CheckString)));

end;

function IsTime(const CheckString:string):Boolean;

var

Pos: Integer;

v:TDateTime;

begin

Pos := 1;

Result:=ScanTime(CheckString, Pos, v) or (Pos <= Length(CheckString))

end;

{$HINTS OFF}

function IsInteger(const CheckString:string):Boolean;

var

V,Code:Integer;

begin

Val(CheckString,V,Code);

Result := code = 0;

end;

{$HINTS ON}

function IsFloat(const CheckString:string):Boolean;

var

V:Extended;

begin

Result:=TextToFloat(PChar(CheckString), V, fvExtended);

end;

{多字符串ShowMessage}

procedure ShowMessages(const Strings:array of string);

var

i:Integer;

S:string;

begin

for i:=Low(Strings) to High(Strings) do

begin

S:=S+Strings+#13#10;

end;

ShowMessage(S);

end;

{新名称}

function NameToNewName(const Str:string):string;

var

StrPart,NumPart:string;

i,LengStr:Integer;

begin

LengStr:=Length(Str);

i:=LengStr;

if Str in [‘0‘..‘9‘] then

begin

NumPart:=Str+NumPart;

Dec(i);

while Str in [‘1‘..‘9‘] do

begin

NumPart:=Str+NumPart;

Dec(i);

end;

end;

StrPart:=Copy(Str,1,i);

if Length(NumPart)=0 then NumPart:=‘1‘

else NumPart:=IntToStr(StrToInt(NumPart)+1);

Result:=StrPart+NumPart;

end;

时间: 2024-08-07 00:17:18

Delphi常用函数库的相关文章

Delphi常用函数

Abort                      函数 引起放弃的意外处理 Abs(real)                  函数 绝对值函数 AddExitProc                函数 将一过程添加到运行时库的结束过程表中 Addr(variant)              函数 返回指定对象的地址 AdjustLineBreaks           函数 将给定字符串的行分隔符调整为CR/LF序列 AllocMem                   函数 在堆栈

使用prototype扩展的JavaScript常用函数库

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 /** * 检索数组元素(原型扩展或重载) * @param {o} 被检索的元素值 * @type int * @returns 元素索引 */ Array.prototype.contains = function(o) { var index = -1; for(var i=0;i<thi

2.2.2 ufunc函数&amp;2.2.3 常用函数库

①add对应元素相加 ②subtract对应元素相减 ③数组元素相乘 ④divide.floor_divide除法和向下取整(丢弃余数) ⑤power幂函数 ⑥maximum.fmax返回两个数组较大者组成的数组 ⑦mod取余 ⑧greater.greater_equal.less.less_equal.equal.not_equal:元素比较运算相当于>.>=.<.<=.=.≠ ⑨logical_and.logical_or.logical_xor元素真值运算相当于&.|

delphi常用函数大全(转)

Abort函数引起放弃的意外处理Abs函数绝对值函数AddExitProc函数将一过程添加到运行时库的结束过程表中Addr函数返回指定对象的地址AdjustLineBreaks函数将给定字符串的行分隔符调整为CR/LF序列Align属性使控件位于窗口某部分Alignment属性控件标签的文字位置AllocMem函数在堆栈上分配给定大小的块AllowGrayed属性允许一个灰度选择AnsiCompareStr函数比较字符串(区分大小写)AnsiCompareText函数比较字符串(不区分大小写)A

Lua中的常用函数库汇总

lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误信息.使用pcall() (见下面)捕捉错误

delphi 常用函数

StrUtils 这个包里面包含一些字符串相关的函数: 字符串相加 var S1, S2: String; begin S1 := Concat('A', 'B'); // 连接两个字符串,S1变量等于AB. S2 := Concat('Borland', ' Delphi', ' 7.0'); // 连接三个字符,S2变量等于Borland Delphi 7.0. end; 去掉最后一个字符: var s : string; begin s := '123'; caption := copy(

lua中的数据结构-table常用函数库

table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开.除了table外, 其他的参数都不是必须的, 分隔符的默认值是空字符, start的默认值是1, end的默认值是数组部分的总长. sep, start, end这三个参数是顺序读入的, 所以虽然它们都不是必须参数,

Delphi 常用函数记录

//判断是否是数字 function IsNumeric(sDestStr: string): Boolean; //简写多余汉字 function SimplifyWord(sWord: string; iMaxLen: Integer): string; //读写取注册表中的字符串值 function ReadRegStr(sDWName, KeyName: string; SvrBZ: TSvrOrClient; DefaultValue: string = ''): string; pr

php之常用函数库

1.时间和日期 如何获取时间戳 time()--从1970年开始计算的毫秒数 echo time(); 日期 echo date('Y-m-d H:i:s'); 获取默认是时区 echo date_default_timezone_get(); 默认获得的时间和本地电脑时间不一致,需要设置相应的时区 date_default_timezone_set('Asia/Shanghai'); //设置为上海的时区 echo date('Y-m-d H:i:s'); 把时间戳转换成日期呈现出来 echo