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

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

?? udbm.pas

?? 數據庫通用工具
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  DriverId=25;
  Exclusive=1;
  FIL=MS Access;
  MaxBufferSize=2048;
  MaxScanRows=8;
  PageTimeout=5;
  ReadOnly=0;
  SafeTransactions=0;
  Threads=3;
  UID=admin;
  UserCommitSync=Yes;"
  //}

  //adocLink.ConnectionString := 'Provider=MSDASQL.1;Password=why;'+
  //    'Persist Security Info=True;User ID=admin;Extended Properties="'+
  //    'DBQ='+vdir+'cardBase.mdb;'+
  //    'Driver={Microsoft Access Driver (*.mdb)};'+
  //    'DriverId=25;Exclusive=1;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;'+
  //    'PageTimeout=5;ReadOnly=0;SafeTransactions=0;Threads=3;UID=admin;"';
  //}
//  mdbUser := 'admin';
//  mdbPass := '';

  adocLink.ConnectionString := 'Provider=MSDASQL.1;Password='+mdbPass+';'+
      'Persist Security Info=True;User ID='+mdbUser+';Extended Properties="'+
      'DBQ='+sPathName+';'+
      'Driver={Microsoft Access Driver (*.mdb)};'+
      'DriverId=25;Exclusive=1;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;'+
      'PageTimeout=5;ReadOnly=0;SafeTransactions=0;Threads=3;UID='+mdbUser+';"';

  try
    adocLink.Connected := true;
  except
    exit;
  end;

  Result := adocLink.Connected;
  {
  slt := TStringList.Create();
  adocLink.GetTableNames(slt,false);//B
  for i := 0 to slt.Count-1 do
  begin
    ss := slt.Strings[i];
    //ss := copy(ss,5,length(ss)-4);
    cbxTable.Items.Add( ss );
  end;
  slt.Free;
  //}
end;

procedure Tdbm.DataModuleCreate(Sender: TObject);
begin
  appPath := ExtractFileDir(Application.ExeName);
  sys32Path := GetSysPath();
end;

procedure Tdbm.listODBCs( sl : TStrings );
var
  TheReg : TRegistry;
//  Names : TStringList;
begin
  inherited;
//  Session.GetAliasNames(Memo1.Lines) ;
  TheReg := TRegistry.Create;
  TheReg.RootKey := HKEY_LOCAL_MACHINE;
  try
    if TheReg.OpenKey( '\software\odbc\odbc.ini\ODBC Data Sources',false ) then
    begin                        
      TheReg.GetValueNames( sl );
    end;
  finally   
    TheReg.Free;
  end;
end;

function getFieldTypeSQL( sDPName : string ) : string;
begin
  sDPName := Trim(sDPName);
  Result := '';
  if sDPName='TIntegerField' then
  begin
    Result := 'int';
  end
  else if sDPName='TStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TWideStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TFloatField' then
  begin
    Result := 'float';
  end
  else if sDPName='TCurrencyField' then
  begin
    Result := 'money';
  end
  else if sDPName='TBCDField' then
  begin
    Result := 'money';
  end
  else if sDPName='TDateTimeField' then
  begin
    Result := 'datetime';
  end
  else if sDPName='TBooleanField' then
  begin
    Result := 'bit';
  end
  else if sDPName='TBlobField' then
  begin
    Result := 'image';
  end
  else if sDPName='TAutoIncField' then
  begin
    Result := 'int (自增)';
  end
  else if sDPName='TSmallintField' then
  begin
    Result := 'smallint';
  end
  else if sDPName='TMemoField' then
  begin
    Result := 'text';
  end
  else
  begin
    //TWordField
    //TBytesField
//    Result := '-【'+sDPName+'】-';
    Result := '--';
  end;

end;

function getFieldTypeMySQL( sDPName : string ) : string;
begin
  sDPName := Trim(sDPName);
  Result := '';
  if sDPName='TIntegerField' then
  begin
    Result := 'int';
  end
  else if sDPName='TStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TWideStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TFloatField' then
  begin
    Result := 'float';
  end
  else if sDPName='TCurrencyField' then
  begin
    Result := 'money';
  end
  else if sDPName='TBCDField' then
  begin
    Result := 'money';
  end
  else if sDPName='TDateTimeField' then
  begin
    Result := 'datetime';
  end
  else if sDPName='TBooleanField' then
  begin
    Result := 'bit';
  end
  else if sDPName='TBlobField' then
  begin
    Result := 'image';
  end
  else if sDPName='TAutoIncField' then
  begin
    Result := 'int (自增)';
  end
  else if sDPName='TSmallintField' then
  begin
    Result := 'smallint';
  end
  else if sDPName='TMemoField' then
  begin
    Result := 'text';
  end
  else
  begin
    //TWordField
    //TBytesField
//    Result := '-【'+sDPName+'】-';
    Result := '--';
  end;

end;

function getFieldTypeAccess( sDPName : string ) : string;
begin
  sDPName := Trim(sDPName);
  {
文本          | varchar【50】   | TWideStringField
備注          | text【0】       | TMemoField
數字          | int【0】        | TIntegerField
日期/時間     | datetime【0】   | TDateTimeField
貨幣          | money【4】      | TBCDField
自動編號      | int(自增)【0】  | TAutoIncField
是/否         | bit【0】        | TBooleanField
OLE 對象      | image【0】      | TBlobField
超級鏈接      | text【0】       | TMemoField
數字(查閱向導)| int【0】        | TIntegerField
  }
  Result := '';
  if sDPName='TIntegerField' then
  begin
    Result := 'int';
  end
  else if sDPName='TStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TWideStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TFloatField' then
  begin
    Result := 'float';
  end
  else if sDPName='TBCDField' then
  begin
    Result := 'money';
  end
  else if sDPName='TCurrencyField' then
  begin
    Result := 'money';
  end
  else if sDPName='TDateTimeField' then
  begin
    Result := 'datetime';
  end
  else if sDPName='TBooleanField' then
  begin
    Result := 'bit';
  end
  else if sDPName='TBlobField' then
  begin
    Result := 'image';
  end
  else if sDPName='TAutoIncField' then
  begin
    Result := 'int(自增)';
  end
  else if sDPName='TSmallintField' then
  begin
    Result := 'smallint';
  end
  else if sDPName='TMemoField' then
  begin
    Result := 'text';
  end
  else
  begin
    Result := '--';
  end;

end;

function getFieldTypeDB2( sDPName : string ) : string;
begin
  sDPName := Trim(sDPName);
  Result := '';
  if sDPName='TIntegerField' then
  begin
    Result := 'int';
  end
  else if sDPName='TStringField' then
  begin
    Result := 'varchar';
  end
  else if sDPName='TWideStringField' then//TStringField
  begin
    Result := 'varchar';
  end
  else if sDPName='TFloatField' then
  begin
    Result := 'float';
  end
  else if sDPName='TCurrencyField' then
  begin
    Result := 'money';
  end
  else if sDPName='TDateField' then
  begin
    Result := 'datetime';
  end
  else if sDPName='TDateTimeField' then
  begin
    Result := 'datetime';
  end
  else if sDPName='TBooleanField' then
  begin
    Result := 'bit';
  end
  else if sDPName='TBlobField' then
  begin
    Result := 'image';
  end
  else if sDPName='TAutoIncField' then
  begin
    Result := 'int (自增)';
  end
  else if sDPName='TSmallintField' then
  begin
    Result := 'smallint';
  end
  else if sDPName='TMemoField' then
  begin
    Result := 'text';
  end
  else//'TDateField'
  begin
    Result := '-【'+sDPName+'】-';
  end;

end;

function FullString(Const Source,Seep:String; Const Number:Integer; Const bLeftAdd:Boolean=True ): String;
var
  TempStr:String;
  i:integer;
begin
  TempStr:=Source;
  For i:=length(Source) to Number-1 do
  begin
    if bLeftAdd then//左補
      TempStr := Seep+TempStr
    else//右補
      TempStr := TempStr+Seep;
  end;
  Result := TempStr;
  
end;

//fri變量,只能包含有 小數點、空格、 '/'、數字。如 1 1/2 或1.2
function fri2decimal(fri: string): double;
var
  strs: TStrings;
  fri_dec: double;
  function csubstr(substr: string; str: string): integer;
  var
    i, j: integer;
  begin
    j := 0;
    for i := 1 to length(str) do
      if str[i] = substr then j := j + 1;
    result := j;
  end;

  function onlydecimal(str_fri: string): double;
  begin
     //2.只有小數點、沒有空格、'/'  如有只一個小數點,則直接轉換,如有多個小數點,全部去掉后轉換
    if csubstr('.', str_fri) <> 1 then //一個小數點的保留
      str_fri := StringReplace(str_fri, '.', '', [rfReplaceAll]); //多個小數點全去掉
    result := strtofloat(str_fri);
  end;

  function onlyspace(str_fri: string): double;
  begin
    //3.只有空格、沒有小數點、'/'  去除全部空格后轉換
    str_fri := StringReplace(str_fri, ' ', '', [rfReplaceAll]);
    result := strtofloat(str_fri);
  end;

  function onlyxg(str_fri: string): double;
  begin
   //4.只有'/'、沒有小數點、空格 ,如'/'在頭,在尾,或多個都全部去掉,只有一個的進行除運算,如分母為0的,僅對分子進行轉換
   //如果/在頭與尾,或超過1個則去掉/
    if (pos('/', str_fri) = 1) or (pos('/', str_fri) = length(str_fri)) or (csubstr('/', str_fri) <> 1) then
    begin
      str_fri := StringReplace(str_fri, '/', '', [rfReplaceAll]);
      result := strtofloat(str_fri);
    end
    else
    begin //如果在中間,進行除法運算
      strs := TStringList.Create;
      strs.Delimiter := '/';
      strs.DelimitedText := str_fri;
      if strtofloat(strs[1]) = 0 then //如分母為0的,僅對分子進行轉換
        result := strtofloat(strs[0])
      else        //use Math
        result := roundto(strtofloat(strs[0]) / strtofloat(strs[1]), -5);
      strs.Free;
    end;
  end;

  function spacexg(str_fri: string): double;
  begin
    if (pos('/', str_fri) = 1) or (pos('/', str_fri) = length(str_fri)) or (csubstr('/', str_fri) <> 1) then //如果/在最前與最后,去掉/
    begin ///在最前與最后,或多個/去掉/
      str_fri := StringReplace(str_fri, '/', '', [rfReplaceAll]);
      result := onlyspace(str_fri);
    end
    else if (pos('/', str_fri) < pos(' ', str_fri)) or (csubstr(' ', str_fri) <> 1) then //如果/在空格前面,去除空格,按分數計算
    begin //如果/在空格前,或多個空格 去掉空格
      str_fri := StringReplace(str_fri, ' ', '', [rfReplaceAll]);
      result := onlyxg(str_fri);
    end
    else
    begin
      strs := TStringList.Create;
      strs.Delimiter := ' ';
      strs.DelimitedText := str_fri;
      result := strtofloat(strs[0]) + onlyxg(strs[1]);
    end;
  end;
begin
  result := 0;

  //1.空格、小數點、'/' 都沒有 直接轉換為小數
  if (pos(' ', fri) = 0) and (pos('.', fri) = 0) and (pos('/', fri) = 0) then
    result := strtofloat(fri);

  //2.只有小數點、沒有空格、'/'  如有只一個小數點,則直接轉換,如有多個小數點,全部去掉后轉換
  if (pos(' ', fri) = 0) and (pos('.', fri) <> 0) and (pos('/', fri) = 0) then
    result := onlydecimal(fri);

  //3.只有空格、沒有小數點、'/'  去除全部空格后轉換
  if (pos(' ', fri) <> 0) and (pos('.', fri) = 0) and (pos('/', fri) = 0) then
    result := onlyspace(fri);

  //4.只有'/'、沒有小數點、空格 ,如'/'在頭,在尾,或多個都全部去掉,只有一個的進行除運算,如分母為0的,僅對分子進行轉換
  if (pos(' ', fri) = 0) and (pos('.', fri) = 0) and (pos('/', fri) <> 0) then
    result := onlyxg(fri);

  //5.有小數點 有空格,沒有'/'   去掉空格,按小數來來計算
  if (pos(' ', fri) <> 0) and (pos('.', fri) <> 0) and (pos('/', fri) = 0) then
  begin
    fri := StringReplace(fri, ' ', '', [rfReplaceAll]);
    result := onlydecimal(fri);
  end;

  //6.有'/',有小數點 沒空格, 去掉小數點,按/來來計算
  if (pos(' ', fri) = 0) and (pos('.', fri) <> 0) and (pos('/', fri) <> 0) then
  begin
    fri := StringReplace(fri, '.', '', [rfReplaceAll]);
    result := onlyxg(fri);
  end;

  //7.有'/',有空格 沒小數點,
  if (pos(' ', fri) <> 0) and (pos('.', fri) = 0) and (pos('/', fri) <> 0) then
    result := spacexg(fri);

  //8.有'/',有空格 有小數點,  去除小數點,按7來算
  if (pos(' ', fri) <> 0) and (pos('.', fri) <> 0) and (pos('/', fri) <> 0) then
  begin
    fri := StringReplace(fri, '.', '', [rfReplaceAll]);
    result := spacexg(fri);
  end;
end;

function Fraction(decimal: double): string;
var
  intNumerator, intDenominator, intNegative: integer; // 聲明整數變量為長整數
  dblFraction, dblDecimal, dblAccuracy, dblinteger: Double; // 聲明浮點數為雙精度
begin
  //十進制小數轉分數(無下載)
  {
原作者
Written by:     Erik Oosterwal
'   Started on:     November 9, 2005
'   Completed on:   November 9, 2005
增加大于1的小數的轉化
小數到分數的轉化

By Erik Oosterwal   翻譯: Zoologist

  下面將介紹一種小數轉化為分數的簡單方法,這種方法能將十進制的小數轉化為分子與分
  母都是整數的分數,換句話說,這個算法能夠自動判定循環節。任何十進制數值都能被轉
  化為一個指定精度的分數。

  這個算法的根本原理是:一個分數對應一條直線的斜率。用數學語言描述就是:一條直線
  的斜率是無窮大(垂直于X軸)或者是(Y2-Y1) / (X2-X1),我們要做的就是找到2個整數,
  在指定的精度范圍內接近這個斜率。對于正數來說,我們設置分子為0,分母為1,然后比
  較這個分數同給定的十進制數。如果我們的分數太小了(比如,我們選擇的點在直線的下
  面),我們就加大分子的值直到這個分數太大(比如,這個點在直線的上方),之后我們
  在增加分母的大小直到這個點在直線下方。

  如果我們的最終目標是無理數(無限不循環小數),這個算法將一直繼續,增加分子和分
  母,直到最終結果在指定的精度上。
  }
  dblDecimal := decimal; //取得目標小數
  if trunc(decimal) = decimal then // 如果是整數,則直轉
    result := floattostr(decimal)
  else
  begin
    if abs(decimal) > 1 then //如果小數大于1 如 10.24 ,進行拆解
    begin
      dblinteger := trunc(decimal); //取出整數部分
      dblDecimal := abs(frac(decimal)); //取出小數部分
    end
    else dblDecimal := decimal;

    dblAccuracy := 0.01; //設置精度
    intNumerator := 0; //初始分子為0
    intDenominator := 1; //初始分母為1
    intNegative := 1; //符號標記為正
    if dblDecimal < 0 then intNegative := -1; //如果目標為負,設置負標志位
    dblFraction := 0; //設置分數值為 0/1
    while Abs(dblFraction - dblDecimal) > dblAccuracy do //如果當前沒有達到精度要求就繼續循環
    begin
      if Abs(dblFraction) > Abs(dblDecimal) then //如果我們的分數大于目標
        intDenominator := intDenominator + 1 //增加分母
      else //否則
        intNumerator := intNumerator + intNegative; //增加分子
      dblFraction := intNumerator / intDenominator; //計算新的分數
    end;
   // edit2.Text := inttostr(intNumerator) + '/' + inttostr(intDenominator);
    if abs(decimal) > 1 then //如果小數大于1 如 10.24 ,進行拆解
      result := floattostr(dblinteger) + ' ' + inttostr(intNumerator) + '/' + inttostr(intDenominator)
    else
      result := inttostr(intNumerator) + '/' + inttostr(intDenominator);
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩av午夜在线观看| 中文字幕欧美区| 亚洲美女视频一区| 日韩不卡一二三区| 99热这里都是精品| 日韩欧美综合一区| 夜夜嗨av一区二区三区四季av| 国产中文字幕精品| 欧美裸体一区二区三区| 亚洲婷婷综合久久一本伊一区| 日韩国产在线观看| 欧美性猛交xxxxxx富婆| 亚洲欧洲一区二区三区| 极品少妇xxxx精品少妇偷拍| 欧美区在线观看| 亚洲人一二三区| 成人国产视频在线观看| 亚洲精品一区二区在线观看| 亚洲成a人片在线观看中文| 日韩一区二区高清| 亚洲国产色一区| 91欧美一区二区| 国产精品久久久久影视| 免费在线观看日韩欧美| 欧美日韩一区 二区 三区 久久精品| 国产精品免费视频网站| 国产精品一区二区视频| 精品久久国产字幕高潮| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲电影你懂得| 色综合视频在线观看| 国产精品国产精品国产专区不片| 国产精品综合久久| 欧美精品一区二| 久久不见久久见中文字幕免费| 欧美区一区二区三区| 婷婷久久综合九色综合绿巨人| 在线观看亚洲a| 一区二区三区成人在线视频| 一本色道久久综合精品竹菊| 日韩美女视频19| 91黄色免费看| 亚洲一区欧美一区| 欧美日韩一区高清| 午夜日韩在线观看| 欧美二区三区91| 天天综合天天综合色| 91麻豆精品国产91久久久久久| 水蜜桃久久夜色精品一区的特点| 欧美午夜精品理论片a级按摩| 亚洲小少妇裸体bbw| 欧美日韩国产经典色站一区二区三区| 亚洲一二三区在线观看| 欧美日韩电影在线播放| 日韩和欧美一区二区三区| 欧美一区二区视频在线观看| 免费人成网站在线观看欧美高清| 欧美mv和日韩mv国产网站| 国产一区二区福利视频| 中文字幕不卡一区| 91片黄在线观看| 五月婷婷欧美视频| 日韩欧美一级二级三级| 国产高清精品在线| 国产精品久久国产精麻豆99网站| 色网综合在线观看| 91视频在线观看免费| 一区二区三区.www| 91精品福利在线一区二区三区| 久久爱www久久做| 中文子幕无线码一区tr| 色欧美日韩亚洲| 日韩国产精品久久久久久亚洲| 亚洲精品一区二区在线观看| 成人激情动漫在线观看| 亚洲一区二区中文在线| 欧美日韩日日骚| 蜜臀av一级做a爰片久久| 久久久高清一区二区三区| 成人深夜福利app| 亚洲国产综合在线| 精品欧美黑人一区二区三区| 成人av资源站| 亚洲成人激情av| 久久久久久久久久久久久久久99| 成人av电影免费观看| 亚洲大片在线观看| 精品处破学生在线二十三| av网站免费线看精品| 日韩精品电影在线| 亚洲国产精品二十页| 91精品福利视频| 韩日av一区二区| 亚洲一区二区三区四区中文字幕| 日韩一区二区三| 99久久国产综合色|国产精品| 婷婷久久综合九色综合绿巨人 | 日韩欧美国产午夜精品| 床上的激情91.| 首页国产欧美日韩丝袜| 久久久国际精品| 91黄色激情网站| 国产激情视频一区二区三区欧美 | 久久久久久久久久看片| 色狠狠桃花综合| 久久66热偷产精品| 伊人性伊人情综合网| 精品国产1区2区3区| 一本大道久久a久久综合| 九九国产精品视频| 亚洲免费电影在线| 欧美精品一区二区三区在线播放| av不卡免费在线观看| 亚洲高清免费视频| 久久精品亚洲一区二区三区浴池| 欧美综合欧美视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 舔着乳尖日韩一区| 久久精品男人天堂av| 欧美综合亚洲图片综合区| 国产在线国偷精品产拍免费yy | 久久久久久久久久看片| 色国产综合视频| 亚洲综合丝袜美腿| 一区在线观看视频| 久久嫩草精品久久久精品一| 欧美在线视频你懂得| 老司机精品视频一区二区三区| 久久午夜色播影院免费高清| 5858s免费视频成人| 色综合视频在线观看| 国产精品亚洲午夜一区二区三区| 亚洲国产日韩一级| 欧美国产欧美综合| 欧美mv日韩mv亚洲| 91麻豆精品国产自产在线| 欧美一级电影网站| 亚洲自拍另类综合| 欧美群妇大交群的观看方式| 成人av先锋影音| 国产精品一区二区久激情瑜伽| 日韩国产在线一| 国产精品高潮呻吟| 国产免费观看久久| 精品国产一区二区三区不卡 | 日韩欧美国产不卡| 在线观看91视频| 99视频有精品| 国产成人精品亚洲777人妖| 国内精品久久久久影院薰衣草| 亚洲国产美国国产综合一区二区| 国产精品久久久久久亚洲伦| 国产喂奶挤奶一区二区三区| 精品国产一区二区三区久久久蜜月 | 日本一区二区视频在线| 欧美日韩在线直播| 91玉足脚交白嫩脚丫在线播放| 丰满放荡岳乱妇91ww| 成人在线综合网站| 国产乱码精品一区二区三区忘忧草| 蜜桃精品视频在线| 精品一区二区影视| 激情图区综合网| 蜜臀av一级做a爰片久久| 日本一道高清亚洲日美韩| 天堂资源在线中文精品| 亚洲 欧美综合在线网络| 亚洲精品日产精品乱码不卡| 樱花草国产18久久久久| 亚洲综合视频在线| 午夜久久久久久久久久一区二区| 亚洲一二三区在线观看| 午夜久久久久久| 日日噜噜夜夜狠狠视频欧美人| 国产午夜精品久久久久久久| 久久日一线二线三线suv| 日韩欧美资源站| www.在线欧美| 麻豆91小视频| 国产真实乱子伦精品视频| 久久福利视频一区二区| 激情另类小说区图片区视频区| 天天av天天翘天天综合网| 最新成人av在线| 亚洲高清免费观看高清完整版在线观看| 国产精品理论在线观看| 国产亚洲精品bt天堂精选| 日本一区二区三区四区在线视频 | 久久精品国产精品亚洲红杏| 亚洲五码中文字幕| 亚洲欧洲精品天堂一级| 亚洲国产精品精华液ab| 337p日本欧洲亚洲大胆精品| 久久久美女毛片| 26uuu国产一区二区三区| 国产精品乱码人人做人人爱| 亚洲欧美国产77777| 日本aⅴ亚洲精品中文乱码| 激情五月婷婷综合网| 午夜精品久久久|