?? _funct.pas
字號:
{===============================================================}
{ 函數 : RESULTSTRING = HexToBin(HEXSTRING)
{ 目的 : 把十六進制字符串轉換為二進制字符串
{
{===============================================================}
{ 函數 : RESULTINTEGER = HexCharToInt(HEXCHAR)
{ 目的 : 轉換一個十六進制字符為整數
{===============================================================}
{ 函數 : RESULTSTRING = HexCharToBin(HEXCHAR)
{ 目的 : 轉換一個十六進制字符為二進制字符串
{===============================================================}
{ 函數 : RESULTINTEGER = Pow(BASE,POWER)
{ 目的 : 指數函數
{===============================================================}
{ 函數 : RESULTINTEGER = BinStrToInt(BINSTRING)
{ 目的 : 把二進制字符串轉換為整數
{===============================================================}
{ 函數 : RESULTSTRING = DecodeSMS7Bit (PDUSTRING)
{ 目的 : 解碼一個7-bit SMS (GSM 03.38) 為ASCII碼
{===============================================================}
{ 函數 : RESULTSTRING = ReverseStr (SOURCESTRING)
{ 目的 : 反轉一個字符串
{===============================================================}
unit _funct;
interface
uses
Windows,Classes,Sysutils,inifiles;
function HexToBin(HexNr : string): string;
function HexCharToInt(HexToken : char):Integer;
function HexCharToBin(HexToken : char): string;
function pow(base, power: integer): integer;
function BinStrToInt(BinStr : string) : integer;
function DecodeSMS7Bit(PDU : string):string;
function ReverseStr(SourceStr : string) : string;
{判斷字符是否是數字}
function IsDigit(ch: char): boolean;
{判斷字符是否是大寫字符}
function IsUpper(ch: char): boolean;
{判斷字符是否是小寫字符}
function IsLower(ch: char): boolean;
{轉換為大寫字符}
function ToUpper(ch: char): char;
{轉換為小寫字符}
function ToLower(ch: char): char;
{ Capitalizes first letter of every word in s }
function Proper(const s: string): string ;
{返回兩個子字符串之間字符的個數}
Function p2pcount( s, ss1, ss2 : string ): integer;
{更快速的字符查詢,快40%}
function ScanStr(ToScan: PChar; Sign: Char):PChar;
{替換字符串中子串的函數,他可以從字符串中找出指定子串,并替換為另一子串。}
function replacing(S,source,target:string):string;
{另兩個替換字符串中子串的函數}
function repl_substr( sub1, sub2, s: string ): string;
{替換字符串}
function ReplaceText(const S,ReplacePiece,ReplaceWith: String):String;
{替換全部子字符串的函數}
function ReplaceSub(str, sub1, sub2: String): String;
{在字符串左右填充指定數量的指定字符}
function UT_PadString(inString :string; maxLength :integer; padChar :char;
left :boolean) :string;
{提取字符串中指定子字符串前的字符串}
Function Before ( Src:string ; Var S:string ) : string ;
{提取字符串中指定子字符串后的字符串}
Function After ( Src:string ; Var S:string ) : string ;
{判斷字符串是否可以轉換為整數}
function IsIntStr(const S: string): boolean;
{從字符串中刪除指定字符串}
function RemoveInvalid(what, where: string): string;
{根據某個字符分割字符串的函數}
Procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
{加密}
Function EncrypKey (Src:String; Key:String):string;
{解密函數}
Function UncrypKey (Src:String; Key:String):string;
{寫ini}
Function WriteIniFile (inifile:string; inimain:string; inimain2:string; initext:string):Boolean;
{讀INI文件}
Function ReadIniFile (inifile:string; inimain:string; inimain2:string):String;
{生成隨機數字}
Function RanNum() : string; stdcall;
{如果是IP地址返回True,否則,返回False }
Function ISIPAddr(IPStr:string):Boolean;
{添加文件,文件名n,添加的字符s}
Function Apptext(s,Src:string):Boolean;
{格式化日期.把20050102變成2005-01-02}
Function FormatSD(s:string):string;
{檢查是否為日期 }
Function Do_chkdate(s:string):Boolean;
implementation
{把16進制字符串轉換為2進制字符串} {}
function HexCharToInt(HexToken : char):Integer;
begin
{if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32);
{ use lowercase aswell }
Result:=0;
if (HexToken>#47) and (HexToken<#58) then { chars 0....9 }
Result:=Ord(HexToken)-48
else if (HexToken>#64) and (HexToken<#71) then { chars A....F }
Result:=Ord(HexToken)-65 + 10;
end;
{轉換一個16進制字符為整數}
function HexCharToBin(HexToken : char): string;
var DivLeft : integer;
begin
DivLeft:=HexCharToInt(HexToken); { first HEX->BIN }
Result:='';
{ Use reverse dividing }
repeat { Trick; divide by 2 }
if odd(DivLeft) then { result = odd ? then bit = 1 }
Result:='1'+Result { result = even ? then bit = 0 }
else
Result:='0'+Result;
DivLeft:=DivLeft div 2; { keep dividing till 0 left and length = 4 }
until (DivLeft=0) and (length(Result)=4); { 1 token = nibble = 4 bits }
end;
{轉換一個16進制字符為2進制字符串}
function HexToBin(HexNr : string): string;
{ only stringsize is limit of binnr }
var Counter : integer;
begin
Result:='';
for Counter:=1 to length(HexNr) do
Result:=Result+HexCharToBin(HexNr[Counter]);
end;
{指數函數}
function pow(base, power: integer): integer;
var counter : integer;
begin
Result:=1;
for counter:=1 to power do
Result:=Result*base;
end;
{把2進制字符串轉換為整數}
function BinStrToInt(BinStr : string) : integer;
var counter : integer;
begin
if length(BinStr)>16 then
raise ERangeError.Create(#13+BinStr+#13+
'is not within the valid range of a 16 bit binary.'+#13);
Result:=0;
for counter:=1 to length(BinStr) do
if BinStr[Counter]='1' then
Result:=Result+pow(2,length(BinStr)-counter);
end;
{解碼一個7-bit SMS (GSM 03.38) o ASCII碼}
function DecodeSMS7Bit(PDU : string):string;
var OctetStr : string;
OctetBin : string;
Charbin : string;
PrevOctet: string;
Counter : integer;
Counter2 : integer;
begin
PrevOctet:='';
Result:='';
for Counter:=1 to length(PDU) do
begin
if length(PrevOctet)>=7 then { if 7 Bit overflow on previous }
begin
if BinStrToInt(PrevOctet)<>0 then
Result:=Result+Chr(BinStrToInt(PrevOctet))
else Result:=Result+' ';
PrevOctet:='';
end;
if Odd(Counter) then { only take two nibbles at a time }
begin
OctetStr:=Copy(PDU,Counter,2);
OctetBin:=HexToBin(OctetStr);
Charbin:='';
for Counter2:=1 to length(PrevOctet) do
Charbin:=Charbin+PrevOctet[Counter2];
for Counter2:=1 to 7-length(PrevOctet) do
Charbin:=OctetBin[8-Counter2+1]+Charbin;
if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin))
else Result:=Result+' ';
PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1);
end;
end;
end;
{反轉一個字符串}
function ReverseStr(SourceStr : string) : string;
var Counter : integer;
begin
Result:='';
for Counter:=1 to length(SourceStr) do
Result:=SourceStr[Counter]+Result;
end;
////////////////////////////////////////////////////////
{判斷字符是否是數字}
function IsDigit(ch: char): boolean;
begin
Result := ch in ['0'..'9'];
end;
{判斷字符是否是大寫字符}
function IsUpper(ch: char): boolean;
begin
Result := ch in ['A'..'Z'];
end;
{判斷字符是否是小寫字符}
Function IsLower(ch: char): boolean;
begin
Result := ch in ['a'..'z'];
end;
{轉換為大寫字符}
Function ToUpper(ch: char): char;
begin
Result := chr(ord(ch) and $DF);
end;
{轉換為小寫字符}
Function ToLower(ch: char): char;
begin
Result := chr(ord(ch) or $20);
end;
{ Capitalizes first letter of every word in s }
Function Proper(const s: string): string;
var
i: Integer;
CapitalizeNextLetter: Boolean;
begin
Result := LowerCase(s);
CapitalizeNextLetter := True;
for i := 1 to Length(Result) do
begin
if CapitalizeNextLetter and IsLower(Result[i]) then
Result[i] := ToUpper(Result[i]);
CapitalizeNextLetter := Result[i] = ' ';
end;
end;
////////////////////////////////////////////////////////////
{返回兩個子字符串之間字符的個數}
Function p2pcount( s, ss1, ss2 : string ): integer;
var i, j, slen : integer;
begin
i := pos( ss1, s );
j := pos( ss2, s );
slen := Length(ss2);
if j >= i then
Result := j - i + slen
else
Result := 0;
end;
{更快速的字符查詢,快40%}
Function ScanStr(ToScan: PChar; Sign: Char):PChar;
begin
Result:= nil;
if ToScan <> nil then
while (ToScan^ <> #0) do begin
if ToScan^ = Sign then begin
Result:= ToScan;
break;
end;
inc(ToScan);
end;
end;
/////////////////////////////
{替換字符串中子串的函數,他可以從字符串中找出指定子串,并替換為另一子串。}
function replacing(S,source,target:string):string;
var site,StrLen:integer;
begin
{source在S中出現的位置}
site:=pos(source,s);
{source的長度}
StrLen:=length(source);
{刪除source字符串}
delete(s,site,StrLen);
{插入target字符串到S中}
insert(target,s,site);
{返回新串}
replacing:=s;
end;
///////////////////////
{另兩個替換字符串中子串的函數}
function repl_substr( sub1, sub2, s: string ): string;
var i: integer;
begin
repeat
i := pos( sub1, s ) ;
if i > 0 then begin
delete( s, i, Length(sub1));
insert( sub2, s, i );
end;
until i < 1;
Result := s;
end;
{替換字符串}
Function ReplaceText(const S,ReplacePiece,ReplaceWith: String):String;
Var
Position: Integer;
TempStr: String;
begin
Position := Pos(ReplacePiece,S);
if Position > 0 then Begin
TempStr := S;
Delete(TempStr,1,Position-1+Length(ReplacePiece));
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -