亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zkutils.pas

?? 在作數據庫中個人認為必要的函數和過程
?? PAS
?? 第 1 頁 / 共 2 頁
字號:

function GetWinDir: String;
var
  p: PChar;
  z: Integer;
begin
  z := 255;
  GetMem(p,z);
  GetWindowsDirectory(p,z);
  Result := FormatPath(String(p));
  FreeMem(p,z);
end;


function GetCurrentDir: String;
var
  p: PChar;
  z: Integer;
begin
  z := 255;
  GetMem(p,z);
  GetCurrentDirectory(z,p);
  Result := FormatPath(String(p));
  FreeMem(p,z);
end;

function GetInstallDir: String;
var
  s: String;
begin
  s := ParamStr(0);
  s := ExtractFilePath(s);
  Result := FormatPath(s);
end;

function GetFileDate(Filename: String): Tdatetime;
begin
  if FileExists(Filename) then
    Result := FileDateToDateTime(FileAge(Filename))
  else
    Result := MaxInt;
end;

function EncodeDate(const Year: Integer; Month, Day: Word): TDateTime; overload;
begin
  if (Year > 0) and (Year < EncodeDateMaxYear + 1) then
    Result := SysUtils.EncodeDate(Year, Month, Day)
  else
  begin
      if Year <= 0 then
        Result := Year * DaysPerYear + DateTimeBaseDay
      else      // Year >= 10000
        // for some reason year 0 does not exist so we switch from
        // the last day of year -1 (-693594) to the first days of year 1
        Result := (Year-1) * DaysPerYear + DateTimeBaseDay // BaseDate is 1/1/1
            + SolarDifference;                       // guarantee a smooth transition at 1/1/10000
      Result := Trunc(Result);
      Result := Result + (Month-1) * DaysPerMonth;
      Result := Round(Result) + (Day-1);
    end;
end;

//------------------------------------------------------------------------------

procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
begin
  SysUtils.DecodeDate(Date, Year, Month, Day);
end;

//------------------------------------------------------------------------------

procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Integer);
var
  WMonth, WDay: Word;
begin
  DecodeDate(Date, Year, WMonth, WDay);
  Month := Wmonth;
  Day := WDay;
end;

//------------------------------------------------------------------------------

procedure DecodeDate(Date: TDateTime; var Year: Integer; var Month, Day: Word);
var
  WYear: Word;
  RDays, RMonths: TDateTime;
begin
  if (Date >= DateTimeBaseDay) and (Date < DateTimeMaxDay) then
  begin
    SysUtils.DecodeDate(Date, WYear, Month, Day);
    Year := WYear;
  end
  else
  begin
    Year := Trunc((Date - DateTimeBaseDay) / DaysPerYear);
    if Year <= 0 then
      Year := Year - 1
          // for some historical reason year 0 does not exist so we switch from
          // the last day of year -1 (-693594) to the first days of year 1
    else                                      // Year >= 10000
      Date := Date - SolarDifference;         // guarantee a smooth transition at 1/1/10000
    RDays := Date - DateTimeBaseDay;        // Days relative to 1/1/0001
    RMonths := RDays / DaysPerMonth;          // "Months" relative to 1/1/0001
    RMonths := RMonths - Year * 12.0;         // 12 "Months" per Year
    if RMonths < 0 then                       // possible truncation glitches
    begin
      RMonths := 11;
      Year := Year - 1;
    end;
    Month := Trunc(RMonths);
    Rmonths := Month;
    Month := Month + 1;
    RDays := RDays - Year * DaysPerYear;    // subtract Base Day ot the year
    RDays := RDays - RMonths * DaysPerMonth;// subtract Base Day of the month
    Day := Trunc (RDays)+ 1;
    if Year > 0 then                          // Year >= 10000
      Year := Year + 1;                      // BaseDate is 1/1/1
  end;
end;

//返回時間的字符串格式,用DivChar間隔
function DateStr(DateTime: TDateTime; DivChar: Char=' '): String;
var
  Y: Integer;
  M, D: Word;
  S: String;
begin
  DecodeDate(DateTime, Y, M, D);
  Result := IntToStr(Y);
  if DivChar <> ' ' then
    Result := Result + DivChar;
  S := IntToStr(M);
  if Length(S) = 1 then
    Result := Result + '0';
  Result := Result + S;
  if DivChar <> ' ' then
    Result := Result + DivChar;
  S := IntToStr(D);
  if Length(S) = 1 then
    Result := Result + '0';
  Result := Result + S;
end;

function Year(DateTime: TDateTime): Integer;
var
  M, D: Word;
begin
  DecodeDate(DateTime, Result, M, D);
end;

function Month(DateTime: TDateTime): Integer;
var
  Y: Integer;
  M, D: Word;
begin
  DecodeDate(DateTime, Y, M, D);
  Result := M;
end;

function Day(DateTime: TDateTime): Integer;
var
  Y: Integer;
  M, D: Word;
begin
  DecodeDate(DateTime, Y, M, D);
  Result := D;
end;

function GetFileVersion(Filename: String): String;
var
  VerInfoSize, VerValueSize, Dummy: Dword;
  VerInfo: Pointer;
  VerValue: PVSFixedFileInfo;
  sVer: String;
  V1,V2,V3,V4: Word;
begin
  VerInfoSize := GetFileVersionInfoSize(PChar(Filename), Dummy);
  GetMem(VerInfo,VerInfoSize);
  GetFileVersionInfo(PChar(Filename), 0, VerInfoSize, VerInfo);
  VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
  With VerValue^ do
  begin
    V1:=dwFileVersionMS shr 16;
    V2:=dwFileVersionMS and $FFFF;
    V3:=dwFileVersionLS shr 16;
    V4:=dwFileVersionLS and $FFFF;
  end;
  FreeMem(VerInfo,VerInfoSize);
  sVer:=IntToStr(V1) + '.' + IntToStr(V2) + '.' +  IntToStr(V3) + '.' + IntToStr(V4);
  Result := sVer;
end;

function SQLString(const AStr: String): String;
var
  iStart, ipos: Integer;
  sResult, sTmp: String;
begin
  //
  iStart := 0;
  sResult := AStr;
  sTmp := AStr;
  ipos := Pos('''', sTmp);
  while ipos > 0 do
  begin
    iStart := iStart + ipos;
    Delete(sResult, iStart, 1);
    Insert('''''',sResult,iStart);
    Inc(iStart);
    sTmp := Copy(sTmp, ipos + 1, Length(sTmp) - ipos);
    ipos := Pos('''', sTmp);
  end;
  Result := sResult;
end;

function CreateFolder(const AFolderName: String): Boolean;
var
  s, tmp: String;
  i: Integer;
begin
  //建立文件夾
  tmp := FormatPath(AFolderName);
  while Pos('\', tmp) <> 0 do
  begin
    i := Pos('\', tmp);
    s := Copy(AFoldername, 0, i);
    if not DirectoryExists(s) then CreateDir(s);
    tmp[i] := ' ';
  end;
  Result := True;
end;

function IsInteger(Value: String): Boolean;
var
  i: Integer;
begin
  try
    i := StrToInt(Value);
    Result := True;
  except
    Result := False;
  end;
end;

function IsNumeric(Value: String): Boolean;
var
  d: Double;
begin
  try
    d := StrToFloat(Value);
    Result := True;
  except
    Result := False;
  end;
end;

Function GetPYIndexChar(const hzChar: String): Char;
begin
  case WORD(hzChar[1]) shl 8 + WORD(hzChar[2]) of
    $B0A1..$B0C4 : Result := 'A';
    $B0C5..$B2C0 : Result := 'B';
    $B2C1..$B4ED : Result := 'C';
    $B4EE..$B6E9 : Result := 'D';
    $B6EA..$B7A1 : Result := 'E';
    $B7A2..$B8C0 : Result := 'F';
    $B8C1..$B9FD : Result := 'G';
    $B9FE..$BBF6 : Result := 'H';
    $BBF7..$BFA5 : Result := 'J';
    $BFA6..$C0AB : Result := 'K';
    $C0AC..$C2E7 : Result := 'L';
    $C2E8..$C4C2 : Result := 'M';
    $C4C3..$C5B5 : Result := 'N';
    $C5B6..$C5BD : Result := 'O';
    $C5BE..$C6D9 : Result := 'P';
    $C6DA..$C8BA : Result := 'Q';
    $C8BB..$C8F5 : Result := 'R';
    $C8F6..$CBF9 : Result := 'S';
    $CBFA..$CDD9 : Result := 'T';
    $CDDA..$CEF3 : Result := 'W';
    $CEF4..$D188 : Result := 'X';
    $D1B9..$D4D0 : Result := 'Y';
    $D4D1..$D7F9 : Result := 'Z';
  else
    Result := Char(0);//hzchar[1]
  end;
end;

Function NumberToChinese(const n0 : Real) :String;
Function IIF(b :Boolean; s1,s2:String): String;
begin //本函數在VFP和VB中均為系統內部函數
  if b then IIF:=s1  else IIF:=s2;
end;
Const c = '零壹貳叁肆伍陸柒捌玖◇分角圓拾佰仟萬拾佰仟億拾佰仟萬';
var L,i,n, code :integer;
Z :boolean;
s, st,st1 :string;
begin
  s :=FormatFloat( '0.00', n0);
  L :=Length(s);
  Z :=n0<1;
  For i:= 1 To L-3 do
  begin
    Val(Copy(s, L-i-2, 1), n, code);
    st := IIf((n=0) And (Z Or (i=9) Or (i=5) Or (i=1)), '', Copy(c, n*2+1, 2))
        + IIf((n=0)And((i<>9)And(i<>5)And(i<>1)Or Z And(i=1)),'',Copy(c,(i+13)*2-1,2))
        + st;
    Z := (n=0);
  end;
  Z := False;
  For i:= 1 To 2 do
  begin
    Val(Copy(s, L-i+1, 1), n, code);
    st1:= IIf((n=0)And((i=1)Or(i=2)And(Z Or (n0<1))), '', Copy(c, n*2+1, 2))
        + IIf((n>0), Copy(c,(i+11)*2-1, 2), IIf((i=2) Or Z, '', '整'))
        + st1;
    Z := (n=0);
  end;
  For i := 1 To Length(st) do If Copy(st, i, 4) = '億萬' Then Delete(st,i+2,2);
  Result := IIf( n0=0, '零', st + st1);
End;

Function GetRandomString(const Len: Integer): String;
const
	c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var
	i: Integer;
begin
  Randomize;
	for i := 0 to Len-1 do 
    Result := Result + c[Random(Length(c)-1)+1]; 
end;

function CharArrayToStr(D: array of Char): String;
var
	I: byte;
const
	Digits: array[0..15] of char =
		('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
begin
	Result := '';
	for I := 0 to 15 do Result := Result + Digits[(Ord(D[I]) shr 4) and $0f] + Digits[Ord(D[I]) and $0f];
end;

function ByteArrayToStr(D: array of Byte): String;
var
	I: byte;
const
	Digits: array[0..15] of char =
		('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
begin
	Result := '';
	for I := 0 to 15 do Result := Result + Digits[(D[I] shr 4) and $0f] + Digits[D[I] and $0f];
end;

//根據字符串,拆分字符串,相當于vb中的split函數
function SplitString(const Source,ch: String): TStringList;
var
  temp: String;
  i: Integer;
begin
  Result := TStringList.Create;
  //如果是空自符串則返回空列表
  if Source = '' then Exit;
  temp := Source;
  i := pos(ch,Source);
  while i<>0 do
  begin
     Result.Add(Copy(temp,0,i-1));
     Delete(temp,1,i);
     i := Pos(ch,temp);
  end;
  Result.Add(temp);
end;

/// <summary>
/// MD5Hash函數
/// </summary>
/// <param name="Source">源字符串</param>
/// <returns>結果字符串,是個32字節長的字符串</returns>
function MD5Hash(const Source: String): String;
var
  MD5Hash: TMD5;
  OutputArray: array[0..15] of Byte;
begin
  MD5Hash := TMD5.Create;
  try
    MD5Hash.InputType    := itString;
    MD5Hash.InputString  := Source;
    MD5Hash.POutputArray := @OutputArray;
    MD5Hash.HashCalc;
    Result := ByteArrayToStr(OutputArray);
  finally
    MD5Hash.Free;
  end;
end;
function  DataFieldToString(VData: Variant): String;
begin
  if VarIsNull(VData) then
    Result:=''
  else
    Result:=VData;
end;
function  DataFieldToInt(VData: Variant): Integer;
begin
  if VarIsNull(VData) then
    Result:=0
  else
    Result:=VData;
end;
function  DataFieldToCurr(VData: Variant): Currency;
begin
  if VarIsNull(VData) then
    Result:=0.0
  else
    Result:=VData;
end;
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区蜜桃| 午夜精品一区在线观看| 欧美一区二区三区在线观看| 91网站视频在线观看| 白白色 亚洲乱淫| 成人深夜在线观看| 色呦呦一区二区三区| av在线这里只有精品| 91丨porny丨最新| 欧美日韩第一区日日骚| 亚洲免费观看高清| 欧美性感一区二区三区| 欧美日韩在线直播| 欧美福利视频导航| 欧美精品一区二区三区久久久 | 国产精品久久久久影院老司| 国产嫩草影院久久久久| 国产精品入口麻豆九色| 亚洲人成影院在线观看| 亚洲国产精品精华液网站| 午夜精品福利一区二区蜜股av | 色国产精品一区在线观看| 欧美日韩一区二区三区高清| 91精品国产免费久久综合| 精品国产一区二区亚洲人成毛片 | 91精品啪在线观看国产60岁| 精品捆绑美女sm三区| 欧美国产成人精品| 亚洲国产精品久久人人爱蜜臀| 亚洲18色成人| 大白屁股一区二区视频| 欧美探花视频资源| 精品99一区二区| 亚洲欧美另类在线| 蜜桃av一区二区| 成人免费毛片片v| 制服丝袜激情欧洲亚洲| 国产日韩欧美精品电影三级在线| 亚洲欧美日韩国产综合| 久久se精品一区精品二区| av亚洲精华国产精华精| 精品久久久久一区二区国产| 最近中文字幕一区二区三区| 男人操女人的视频在线观看欧美| 国产成人免费9x9x人网站视频| 色狠狠色噜噜噜综合网| 欧美xxxx在线观看| 亚洲成人激情av| 成人免费观看视频| 日韩精品一区二区在线观看| 伊人夜夜躁av伊人久久| 国产河南妇女毛片精品久久久| 色视频成人在线观看免| 日本一区二区视频在线观看| 日产欧产美韩系列久久99| 99精品1区2区| 中文字幕免费不卡在线| 精品在线播放免费| 91精品欧美一区二区三区综合在 | www.色精品| 久久蜜臀中文字幕| 欧美a级理论片| 欧美三级韩国三级日本三斤| 国产精品福利在线播放| 国产伦精品一区二区三区免费迷 | 午夜免费久久看| 91农村精品一区二区在线| 日本一区二区免费在线观看视频| 日韩电影在线观看一区| 日本精品免费观看高清观看| 中文字幕不卡在线观看| 韩国av一区二区三区在线观看| 91麻豆精品国产91久久久久| 亚洲韩国精品一区| 欧美三级中文字幕在线观看| 亚洲免费成人av| 色婷婷国产精品久久包臀| 中文在线一区二区| 成人成人成人在线视频| 国产精品拍天天在线| 成人国产精品免费观看视频| 欧美激情一区二区三区不卡| 国产999精品久久久久久绿帽| 久久亚洲私人国产精品va媚药| 欧美aaa在线| 久久女同精品一区二区| 国产凹凸在线观看一区二区| 欧美国产精品中文字幕| 99国产精品一区| 一区二区三区久久| 欧美性高清videossexo| 日韩国产欧美三级| 久久久久国产精品免费免费搜索| 精品一区二区三区在线观看| 国产午夜精品福利| 91浏览器在线视频| 偷拍自拍另类欧美| xvideos.蜜桃一区二区| 成人一区在线观看| 亚州成人在线电影| 久久综合狠狠综合| 色吧成人激情小说| 欧美aaaaaa午夜精品| 国产亚洲欧洲一区高清在线观看| 成人avav影音| 日韩精品免费专区| 亚洲国产精品黑人久久久| 91丨porny丨户外露出| 午夜精品爽啪视频| 国产性色一区二区| 欧美中文字幕不卡| 国产精品伊人色| 亚洲一区欧美一区| 2023国产一二三区日本精品2022| 99久久精品免费看| 另类调教123区| 亚洲人妖av一区二区| 日韩精品一区二| 91视频一区二区三区| 极品少妇xxxx偷拍精品少妇| 亚洲欧美另类久久久精品2019| 日韩一区二区三区视频在线 | 日韩精品亚洲一区| 亚洲欧美在线观看| 日韩精品一区二区三区视频 | 久久精品男人天堂av| 欧美日韩在线播放三区四区| 国产精品一二三四五| 日韩国产在线一| 亚洲青青青在线视频| 国产亚洲欧美一区在线观看| 在线电影院国产精品| 色吧成人激情小说| 成人高清av在线| 国产精品伊人色| 麻豆精品视频在线观看视频| 一区二区视频免费在线观看| 国产亚洲一区字幕| 精品国产污污免费网站入口| 欧美日韩午夜影院| 欧美午夜寂寞影院| 色婷婷国产精品综合在线观看| 成人永久免费视频| 国产成人自拍高清视频在线免费播放 | 3d动漫精品啪啪1区2区免费| 97久久精品人人做人人爽50路| 国产精品一二三四| 国产在线播放一区| 国模一区二区三区白浆| 日本亚洲天堂网| 日韩电影在线观看电影| 亚洲一二三专区| 亚洲一区在线免费观看| 亚洲精品欧美激情| 亚洲综合区在线| 亚洲国产成人va在线观看天堂| 亚洲欧美日韩系列| 一区二区三区高清| 一区二区在线看| 亚洲成人福利片| 日本成人在线视频网站| 日韩精品久久理论片| 青青国产91久久久久久| 日本va欧美va瓶| 国产在线观看一区二区| 国产成人精品三级| 99在线精品观看| 91免费观看视频| 欧美性猛交xxxx乱大交退制版| 欧美日韩在线不卡| 日韩精品一区二区三区四区| 欧美精品一区二区三区视频| 国产视频一区二区三区在线观看| 久久久久国产免费免费| 国产精品久久久久久久久久久免费看| 国产精品高潮呻吟| 亚洲成人av免费| 美脚の诱脚舐め脚责91 | 奇米色777欧美一区二区| 经典三级一区二区| 成人综合在线观看| 在线免费观看成人短视频| 88在线观看91蜜桃国自产| 欧美成人精品1314www| 欧美国产精品久久| 亚洲免费观看在线视频| 蜜臀久久久99精品久久久久久| 国产成人一区在线| 欧美性生活大片视频| 久久青草欧美一区二区三区| 亚洲欧美电影一区二区| 美国三级日本三级久久99| 成人黄色大片在线观看| 69堂成人精品免费视频| 中文字幕中文字幕中文字幕亚洲无线| 亚洲国产综合色| 99在线精品观看| 337p日本欧洲亚洲大胆精品| 亚洲国产精品久久人人爱| 成人一道本在线|