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

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

?? untpub.pas

?? 是分布式糧庫程序,是采用Delphi實現的
?? PAS
?? 第 1 頁 / 共 4 頁
字號:
Procedure GetErrorInfo(var iErrorCode: integer; var sErrorMsg: string);
begin
  iErrorCode := _iErrorCode;
  sErrorMsg  := _sErrorMsg;
end;

// ★★★
// 功能:字符型數據轉換成浮點型的較驗涵數
// 調用方法::MyStrToFloat(要轉換的值,iNum)=False/True,其中iNum引用要定義
function MyStrToFloat(const sText: string; var iNum: Double): boolean;
begin
  try
    iNum:=StrToFloat(sText);
    result:=true;
  except
    result:=false;
  end;
end;

// ★★★
//日期轉換校驗函數
//調用方法:MyStrToDate(要轉換的值,dtDate)=False/true,其中dtDate引用要定義
function MyStrToDate(const sDate:string; var dtDate:TDate):boolean;
begin
  try
  begin
    dtDate:=StrToDate(sDate);
    Result:=true;
  end;
  except
    result:=false;
  end;
end;

// ★★★
// 功能:字符型數據轉換成數字型的較驗涵數
// 調用方法::MyStrToInt(要轉換的值,iNum)=False/True,其中iNum引用要定義
function MyStrToInt(const sText: string; var iNum: integer): boolean;
begin
  try
    iNum:=StrtoInt(SText);
    result:=true;
  except
    result:=false;
  end;
end;

// ★★★
//日期型轉換成字符型,用于數據表的明細顯示的函數
//調用方法:將要轉換的日期類型賦給本函數就可
function MyDateToStr(const dtDate: Tdate; var sDate: string): boolean;
begin
  try
    if dtDate=0 then
      sDate:=''     //當日期型為0時,返回值;為空
    else
      sDate:=DateToStr(dtDate);
    result:=true;
  except
    result:=false;
  end;
end;

// ★★★
// 返回兩個日期之間的月份數
// 同一個年月的日期返回0, 依次類推.
function GetMonthsBetweenTwoDate(const dtD1, dtD2: TDateTime): Integer;
var
  dtDA, dtDB: TDateTime;
  wY1, wM1, wD1: word;
  wY2, wM2, wD2: word;
begin
  if dtD1>=dtD2 then
  begin
    dtDA := dtD2;
    dtDB := dtD1;
  end
  else
  begin
    dtDA := dtD1;
    dtDB := dtD2;
  end;
  DecodeDate(dtDA, wY1, wM1, wD1);
  DecodeDate(dtDB, wY2, wM2, wD2);
  Result := (wY2-wY1)*12 + (wM2-wM1);
end;

// ★★★
// 相對于 dtDate, 計算新日期.
// 新日期與 dtDate 有 iDltYear 年 iDltMonth 月 iDltDay 天的差距.
// iDltYear, iDltMonth, iDltDay 可以為負數, -12 < iDltMonth < 12
function GetNextDate(const dtDate: TDate; const iDltYear, iDltMonth, iDltDay: integer): TDate;
var
  dtTmp: TDate;
  wY, wM, wD: word;
begin
  dtTmp := dtDate + iDltDay;
  DecodeDate(dtTmp, wY, wM, wD);
  wY := wY + iDLtYear;
  wM := wM + iDltMonth;
  if wM > 12 then
  begin
    wY := wY + wM div 12;
    wM := wM mod 12;        // 適應任何月份差異
  end
  else if wM <= 0 then      // 繼續改進
  begin
    wM := wM + 12;
    wY := wY - 1;
{
    wY := wY + wM div 12;
    wM := wM mod 12;        // 適應任何月份差異
}
  end;
  try
    Result := EncodeDate(wY, wM, wD);
  except  // 出錯的唯一可能:xxxx.02.29 無對應的下一個日期, 改為 xxxx.02.28
    Result := EncodeDate(wY, 2, 28);
  end;
end;


//★★★
// 根據人的身份證號碼求出生日期
function GetBirthday(const sInsQueryID: string; var dtBirthday: TDate): boolean;
const
  iY2K: Integer = 0;                // 決定年份, 以判斷2000年前出生或2000年后出生  ★★★★★
  iP18: Integer = 7;                 // 18位身份證的生日日期起始位置                ★★★★★
var
  sYear, sMonth, sDay: string;
begin
  try
    // 18位身份證號碼處理
    if Length(sInsQueryID) = 18 then
    begin
      sYear := Copy(sInsQueryID,iP18,4);
      sMonth:= Copy(sInsQueryID,iP18+4,2);
      sDay  := Copy(sInsQueryID,iP18+6,2);
    end
    else    // 15位身份證號碼處理
    begin
      sYear := Copy(sInsQueryID,7,2);
      sMonth:= Copy(sInsQueryID,9,2);
      sDay  := Copy(sInsQueryID,11,2);
      if StrToInt(sYear) < iY2K then
        sYear:= '20' + sYear
      else
        sYear:= '19' + sYear;
    end;
    dtBirthday := EncodeDate(StrToInt(sYear),StrToInt(sMonth),StrToInt(sDay));
    Result := true;
  except
    Result:= false;
  end;
end;

// 將一表單在另一主表單客戶區居中
// 參數:frmMain: 主表單, frmSub: 待居中的子表單
//       iOffset: 垂直方向其他對象占用高度(缺省為0)
// 例如:CenterForm(frmClinicMain, frmRegister, Toolbar.height)
Procedure CenterForm(frmMain, frmSub: TCustomForm; const iOffset: integer=0);
var
  p: TPoint;
  bHf, bVf: boolean;
begin
    bHf:=false; bVf:=false;
    with frmMain do
    begin
      if ClientWidth > frmSub.width then
        p.x := ( ClientWidth  - frmSub.width) div 2
      else
      begin
        p.x :=0;
        bHf:=true;
      end;
      if ClientHeight + iOffset > frmSub.height then
        p.y :=  (( Clientheight + iOffset - frmSub.height) div 2)
      else
      begin
        p.y :=0;
        bVf:=true;
      end;
      p:= ClientToScreen(p);
      if bVf then
        frmSub.Top :=0
      else
        if p.y>=0 then
          frmSub.Top := p.y;
      if bHf then
        frmSub.left :=0
      else
        if p.x>=0 then
          frmSub.left := p.x ;
    end;
end;

// Blob 字段 --> OLE 控件
function OLEFieldToContainer(var fldWhich: TBlobField; var ocWhich: TOLEContainer;
          const sInitFile: string = ''):boolean;
var
  bsOLE: TBlobStream;
begin
  result:=true;
  try
    // 打開 Query.Field 流
    bsOLE := TBlobStream.Create(fldWhich, bmRead);
    // 讀到 OLE 構件
    try
      if bsOLE.Size = 0 then // 初始化 ocWhich: 創建一個嵌入對象
      begin
        if sInitFile='' then
          ocWhich.createObjectFromFile(_sAppPath+'Emp.doc', false)
        else
          ocWhich.createObjectFromFile(_sAppPath+sInitFile, false);
      end
      else
      begin
        ocWhich.LoadFromStream(bsOLE);
      end;
    except
      on E:exception do
      begin
        ErrorHandler(E,'OLEFieldToContainer');
        result:=false;
       end;
    end;
  finally
    // 關閉 Query.F_OLE 流
    bsOLE.Free;
  end;
end;

// Blob 控件 --> 字段
function OLEContainerToField(var fldWhich: TBlobField; var ocWhich: TOLEContainer):boolean;
var
  bsOLE: TBlobStream;
begin
  result:=true;
  try
    // 打開 Table.Field 流, 清除原數據
    bsOLE := TBlobStream.Create(fldWhich, bmReadWrite);
    bsOLE.Seek(0, soFromBeginning);
    bsOLE.Truncate;
    try
      // 從 OLE 構件寫入
      ocWhich.SaveToStream(bsOLE);
    except
      on E:exception do
      begin
        ErrorHandler(E,'OLEContainerToField');
        result:=false;
      end;
    end;
  finally
    // 關閉 Table1.Field 流
    bsOLE.Free;
  end;
end;


//★★★
// 根據數據庫代碼返回數據庫類別的字符串
function GetDBSName(const iDBSType: integer): string;
begin
  case iDBSType of
  1:	// _iDBAccess = 1;
    Result := 'MSACCESS';
  2:	// _iDBOracle = 2;
    Result := 'ORACLE';
  3:	// _iDBSybase = 3;
    Result := 'SYBASE';
  4:	// _iDBMSSQL  = 4;
    Result := 'MSSQL';
  5:	// _iDBDBF    = 5;
    Result := 'STANDARD';
  else
    Result := 'UNKNOW';
  end;
end;

//★★★
// 文件拷貝,綜合報錯
function DiskCopyFile(const SourceFile:string;const TargetFile:string):boolean;
var
  SourceFileName,SourcePathName:string;
  TargetFileName,TargetPathName:string;
  iErr: integer;
begin
  Result := false;

  SourceFileName:=ExtractFileName(SourceFile);
  SourcePathName:=ExtractFilePath(SourceFile);
  TargetFileName:=ExtractFileName(TargetFile);
  TargetPathName:=ExtractFilePath(TargetFile);

  copyFile(Pchar(SourceFile),Pchar(TargetFile),False);
  iErr := GetLastError;
  case iErr of
  0:
    Result := true;
  21, 5:    //未插入盤
    Application.MessageBox(pchar('  未插入軟盤  '),pchar(_sAppTitle),
                mb_IconWarning+mb_ok);
  2:        //源文件不存在
    Application.MessageBox(pchar('源文件不存在:'+#13+#13+SourceFileName),
                pchar(_sAppTitle),
                mb_IconWarning+mb_ok);
  3:        //目標文件的目錄不存在
    Application.MessageBox(pchar('目標文件的目錄不存在:'+#13+#13+TargetPathName),
                pchar(_sAppTitle),
                mb_IconWarning+mb_ok);
  112:
    Application.MessageBox(pchar('目標盤空間不夠:'+TargetPathName),
                pchar(_sAppTitle),
                mb_IconWarning+mb_ok);
  else
    Application.MessageBox(PChar('拷貝文件失敗。'+#13+#13+
                SourceFile+'  -->  '+TargetFile),
                pchar(_sAppTitle), mb_IconInformation+mb_ok);
  end;
end;


//★★★
// 比較日期是否相同
// 輸入: iCmp: 比較類型(1:年 2:年月 3:年月日 4:年月日時 5:年月日時分 6:年月日時分秒)
// 返回: True: 相同
function SameDateTime(const dtD1, dtD2: TDateTime; const iCmpType: integer): boolean;
var
  wY1, wY2, wM1, wM2, wD1, wD2, wH1, wH2, wMi1, wMi2, wS1, wS2, wMs1, wMs2: word;
begin
  DecodeDate(dtD1, wY1, wM1, wD1);
  DecodeDate(dtD2, wY2, wM2, wD2);
  DecodeTime(dtD1, wH1, wMi1, wS1, wMs1);
  DecodeTime(dtD2, wH2, wMi2, wS2, wMs2);
  case iCmpType of
  1:  Result := (wY1=wY2);
  2:  Result := (wY1=wY2) and (wM1=wM2);
  3:  Result := (wY1=wY2) and (wM1=wM2) and (wD1=wD2);
  4:  Result := (wY1=wY2) and (wM1=wM2) and (wD1=wD2) and (wH1=wH2);
  5:  Result := (wY1=wY2) and (wM1=wM2) and (wD1=wD2) and (wH1=wH2) and (wMi1=wMi2);
  6:  Result := (wY1=wY2) and (wM1=wM2) and (wD1=wD2) and (wH1=wH2) and (wMi1=wMi2) and (wS1=wS2);
  else
      result := false;
  end;
end;

function MyCy2Round(const X: Extended): Currency;
begin
  if X>=0 then
    Result := Trunc(X*100+0.5)/100
  else
    Result := -Trunc(Abs(X)*100+0.5)/100;
end;


// 將日期 sDate 和字段 sFieldName 組合成 sCondition,
// 使其能使用在 Select ... where <sCondition> 中。
// 本函數在 MS Access、Oracle、Sybase 數據庫中獲得通過。
// sDate 的格式是 'YYYY-MM-DD'
// sOptr 為 '>', '>=', '<', '<=', '=', '<>'
function MyDateCondition(const sFieldName, sDate, sOptr, sDB: string;
  var sCondition: string): boolean;
var
  sYear, sMonth, sDay, sFN: string;
begin
  Result:=true;
  sYear:=Copy(sDate, 1, 4);
  sMonth:=Copy(sDate, 6, 2);
  sDay:=Copy(sDate, 9, 2);
  // Access
  if sDB='MSACCESS' then
  begin
    sFN:='['+sFieldName+']';
    if sOptr = '=' then
      sCondition := ' (DatePart("yyyy",'+sFN+')='+sYear+
        ' and DatePart("m",'+sFN+')='+sMonth+
        ' and DatePart("d",'+sFN+')='+sDay+') '
    else if sOptr = '<>' then
      sCondition := ' (DatePart("yyyy",'+sFN+')<>'+sYear+
        ' or DatePart("m",'+sFN+')<>'+sMonth+
        ' or DatePart("d",'+sFN+')<>'+sDay+') '
    else if (sOptr = '>') or (sOptr = '>=') or
      (sOptr = '<') or (sOptr = '<=') then
      sCondition :=
        ' (DatePart("yyyy",'+sFN+')'+sOptr+sYear+       // 年大/小
        ' or (DatePart("yyyy",'+sFN+')='+sYear+         // 年等, 月大/小
          ' and DatePart("m",'+sFN+')'+sOptr+sMonth+')'+
        ' or (DatePart("yyyy",'+sFN+')='+sYear+         // 年等, 月等, 日大/小
          ' and DatePart("m",'+sFN+')='+sMonth+
          ' and DatePart("d",'+sFN+')'+sOptr+sDay+')) '
    else
      sCondition:=' 1=1 ';
    exit;           // 退出
  end;

  // Sybase
  if sDB='SYBASE' then
  begin
    sFN:=sFieldName;
    if sOptr = '=' then
      sCondition := ' (DatePart(yy,'+sFN+')='+sYear+
        ' and DatePart(mm,'+sFN+')='+sMonth+
        ' and DatePart(dd,'+sFN+')='+sDay+') '
    else if sOptr = '<>' then
      sCondition := ' (DatePart(yy,'+sFN+')<>'+sYear+
        ' or DatePart(mm,'+sFN+')<>'+sMonth+
        ' or DatePart(dd,'+sFN+')<>'+sDay+') '
    else if (sOptr = '>') or (sOptr = '>=') or
      (sOptr = '<') or (sOptr = '<=') then
      sCondition :=

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲最色的网站| 日韩欧美的一区二区| 精品系列免费在线观看| 成人av在线看| 日韩三级在线观看| 日本一区二区三区免费乱视频| 亚洲色图第一区| 极品瑜伽女神91| 6080亚洲精品一区二区| 国产亚洲精品久| 免费观看成人鲁鲁鲁鲁鲁视频| 成人一区二区三区中文字幕| 欧美私人免费视频| 亚洲青青青在线视频| 久久精品999| 在线国产亚洲欧美| 国产日韩av一区| 欧美国产精品v| 激情综合色综合久久综合| 欧美影视一区在线| 亚洲欧美在线高清| 国产精品一区二区视频| 欧美mv和日韩mv国产网站| 亚洲妇熟xx妇色黄| 色域天天综合网| 中日韩免费视频中文字幕| 国产又黄又大久久| 日韩无一区二区| 亚洲成人精品影院| 色婷婷香蕉在线一区二区| 中文字幕一区二区三区不卡 | 综合欧美亚洲日本| 激情偷乱视频一区二区三区| 日韩视频免费直播| 青娱乐精品视频| 欧美裸体bbwbbwbbw| 一区二区久久久久| 色婷婷综合久久| 亚洲一区二区av电影| 欧美性大战久久| 亚洲精选视频免费看| 不卡的av网站| 欧美激情一区二区三区四区| 成人avav在线| 亚洲精品老司机| 欧美在线|欧美| 亚洲国产日韩精品| 日韩一区二区三| 男女视频一区二区| 精品久久久久久久久久久久久久久久久| 午夜欧美大尺度福利影院在线看| 日本精品免费观看高清观看| 亚洲国产精品尤物yw在线观看| 欧美婷婷六月丁香综合色| 亚洲电影在线免费观看| 欧美精品九九99久久| 美女在线观看视频一区二区| 国产色一区二区| 成人激情小说乱人伦| 亚洲免费av网站| 欧美日韩精品一区二区三区| 日韩va欧美va亚洲va久久| 91精品国产美女浴室洗澡无遮挡| 喷水一区二区三区| 久久久精品免费网站| 99这里只有精品| 一区二区国产视频| 欧美视频在线观看一区二区| 免播放器亚洲一区| 中文字幕+乱码+中文字幕一区| 色偷偷久久一区二区三区| 丝袜美腿亚洲综合| 欧美精品aⅴ在线视频| 国产精品国产三级国产普通话蜜臀| 欧美在线一区二区三区| 国产一区二区调教| 香蕉av福利精品导航| 国产精品伦理一区二区| 日韩欧美你懂的| 在线亚洲欧美专区二区| 国产做a爰片久久毛片| 亚洲制服丝袜在线| 国产精品国产三级国产有无不卡| 日韩欧美美女一区二区三区| 欧美性猛交xxxx黑人交| thepron国产精品| 国产综合久久久久久久久久久久| 亚洲国产精品一区二区www| 国产精品久久久久久久第一福利| 欧美va亚洲va在线观看蝴蝶网| 欧美三级午夜理伦三级中视频| 成人av网站在线观看| 韩国v欧美v日本v亚洲v| 日本欧美一区二区| 午夜免费欧美电影| 一区二区三区中文字幕精品精品 | 天天色图综合网| 亚洲人午夜精品天堂一二香蕉| 久久蜜桃av一区精品变态类天堂 | 亚洲欧洲av在线| 精品动漫一区二区三区在线观看| 欧美高清性hdvideosex| 欧美性色黄大片| 91论坛在线播放| 99精品久久只有精品| 成人高清视频在线观看| 国产91清纯白嫩初高中在线观看| 精品一区二区三区香蕉蜜桃| 久久不见久久见中文字幕免费| 丝袜美腿亚洲一区二区图片| 日韩国产欧美三级| 日本中文一区二区三区| 日韩国产高清在线| 青青青爽久久午夜综合久久午夜| 日韩av中文字幕一区二区三区| 午夜精品在线看| 香蕉成人伊视频在线观看| 丝袜亚洲精品中文字幕一区| 日本人妖一区二区| 久久成人羞羞网站| 成人丝袜高跟foot| 色综合久久综合网欧美综合网 | 国产不卡免费视频| 成人涩涩免费视频| 99国产精品一区| 欧美无乱码久久久免费午夜一区| 欧美专区日韩专区| 日韩欧美中文一区| 久久久久免费观看| 亚洲欧美自拍偷拍色图| 亚洲第一福利一区| 精品一区精品二区高清| 粗大黑人巨茎大战欧美成人| 色综合天天综合狠狠| 欧美美女直播网站| 欧美精品一区二区三区高清aⅴ | 日韩激情中文字幕| 蜜臀99久久精品久久久久久软件| 国产精品99久久久久久久vr | 亚洲欧美一区二区三区国产精品| 亚洲自拍另类综合| 国产在线视频一区二区三区| 91在线免费看| 欧美一级片免费看| 亚洲欧美在线视频| 奇米精品一区二区三区四区| 成人精品国产免费网站| 欧美精品日日鲁夜夜添| 欧美激情资源网| 日日夜夜精品免费视频| 国产91精品精华液一区二区三区| 欧美视频在线一区| 国产欧美日韩激情| 首页综合国产亚洲丝袜| caoporm超碰国产精品| 91精品国产日韩91久久久久久| 亚洲国产精品激情在线观看| 日韩国产欧美三级| 91网站在线播放| 久久亚洲春色中文字幕久久久| 亚洲一区在线电影| 成人毛片老司机大片| 欧美一区二区三区视频在线| 亚洲视频在线一区| 精品在线视频一区| 欧美老年两性高潮| 国产精品视频第一区| 韩日精品视频一区| 91精品国产综合久久小美女| 亚洲免费观看视频| kk眼镜猥琐国模调教系列一区二区 | 欧美一区午夜精品| 一区二区三区欧美| 91在线小视频| 久久久久亚洲蜜桃| 老司机免费视频一区二区| 欧美日韩亚洲综合在线| 亚洲欧美自拍偷拍| 成人高清视频在线| 国产视频一区在线播放| 狂野欧美性猛交blacked| 欧美性一二三区| 亚洲一区视频在线| 91毛片在线观看| 亚洲欧美区自拍先锋| 成人性生交大片免费看中文| 久久精品亚洲精品国产欧美 | 婷婷开心久久网| 欧美日韩一区二区在线观看| 亚洲综合网站在线观看| 色激情天天射综合网| 亚洲精品乱码久久久久久久久 | 国产福利一区二区三区视频| 日韩欧美国产综合一区| 蜜臀精品久久久久久蜜臀| 91精品国产乱| 久久国产精品一区二区| 久久伊人蜜桃av一区二区| 国产精品一区二区三区乱码| 欧美国产日韩在线观看|