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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ucommon.pas

?? 抽象三層訪問(wèn)數(shù)據(jù)庫(kù)示例
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

function GetSysDirectory: String;
var
  p: PChar;
begin
  GetMem(P, 255);
  try
    GetSystemDirectory(p, 254);
    Result := p;
    if (Result <> '') and (Result[Length(Result)] <> '\') then
      Result := Result + '\';
  finally
    FreeMem(p);
  end;
end;

function ZipFile(AZipFileName, AFileNames, AParams: string): boolean;
var
  strFileName: string;
  HZip: THandle;
  i: integer;
  FarZipFile: function(AZipFileName, AFileLists, AParams: PChar): integer; stdcall;
begin
  Result := False;
  strFileName := ExtractFilePath(GetCurrentModuleFileName) + 'EgovZip.dll';
  if not FileExists(strFileName) then
    strFileName := ExtractFileName(strFileName);
  HZip := LoadLibrary(PChar(strFileName));
  if HZip = 0 then
    exit;
  try
    FarZipFile := GetProcAddress(HZip, 'ZipFile');
    if @FarZipFile = nil then
      exit;
    Result := FarZipFile(PChar(AZipFileName), PChar(AFileNames), PChar(AParams)) <> -1;
    if ParamExists(AParams, 'DeleteFile', true) then
      for i := 0 to SubStrCount(AFileNames) do
        SysUtils.DeleteFile(CopySubStr(AFileNames, i));
  finally
    FreeLibrary(HZip);
  end;
end;

function UnZipFile(AZipFileName, AFilePath, AParams: string): boolean;
var
  strFileName: string;
  HZip: THandle;
  FarUnZipFile: function(AZipFileName, AUnZipDestPath, AParams: PChar): integer; stdcall;
begin
  Result := False;
  strFileName := ExtractFilePath(GetCurrentModuleFileName) + 'EgovZip.dll';
  if not FileExists(strFileName) then
    strFileName := ExtractFileName(strFileName);
  HZip := LoadLibrary(PChar(strFileName));
  if HZip = 0 then
    exit;
  try
    FarUnZipFile := GetProcAddress(HZip, 'UnZipFile');
    if @FarUnZipFile = nil then
      exit;
    Result := FarUnZipFile(PChar(AZipFileName), PChar(AFilePath), PChar(AParams)) <> -1;
  finally
    FreeLibrary(HZip);
  end;
end;

function DeleteDirectory(Dir: string): boolean;
var
  strDir, strFileName: string;
  SearchRec: TSearchRec;
  intFound: integer;
begin
  Result := false;
  if not DirectoryExists(Dir) then
  begin
    Result := true;
    exit;
  end;
  strDir := Dir;
  if strDir[Length(strDir)] <> '\' then
    strDir := strDir + '\';
  intFound := FindFirst(strDir + '*.*', faAnyFile and faDirectory, SearchRec);
  try
    while intFound = 0 do
    begin
      if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
      begin
        strFileName := strDir + SearchRec.Name;
        if DirectoryExists(strFileName) then
          DeleteDirectory(strFileName)
        else
          DeleteFile(strFileName);
      end;
      intFound := FindNext(SearchRec);
    end;
  finally
    FindClose(SearchRec);
  end;
  RemoveDir(strDir);
end;

procedure GetComputerIPName(var AIP, AName: string);
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of char;
  I: Integer;
  GInitData: TWSADATA;
begin
  AIP := '';
  AName := '';
  WSAStartup($101, GInitData);
  GetHostName(Buffer, SizeOf(Buffer));
  AName := StrPas(@Buffer);
  phe := GetHostByName(buffer);
  if phe = nil then
    Exit;
  pptr := PaPInAddr(Phe^.h_addr_list);
  I := 0;
  while pptr^[I] <> nil do
  begin
    AIP := StrPas(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;

procedure CopyStringToPChar(Source: string; Target: PChar; TargetSize: Integer);
begin
  //Target內(nèi)存必須由已預(yù)先分配,并且長(zhǎng)度為T(mén)argetSize。
  //返回的Target內(nèi)容值長(zhǎng)度為Source長(zhǎng)度和TargetSize較小的
  //超出分配長(zhǎng)度則被截除
  if Source = '' then
    Target^ := #0
  else
    Move(Source[1], Target^, Min(TargetSize, Length(Source) + 1));
end;

procedure CopyWideStringToPWideChar(Source: WideString; Target: PWideChar; TargetSize: Integer);
begin
  //Move(Source[1], Target^, Min(TargetSize, Length(Source) + 1));
  //Move(Source[1], Target^, TargetSize);
  if Source = '' then
    Target^ := #0
  else
    StringToWideChar(Source, Target, Min(TargetSize, Length(Source) + 1));
end;

function StringToArray(Source: string): Variant;
var
  i: integer;
  aryResult: array of string;
begin
  if Source = '' then
  begin
    SetLength(aryResult, 0);
    Result := aryResult;
    exit;
  end;
  SetLength(aryResult, SubStrCount(Source) + 1);
  for i := Low(aryResult) to High(aryResult) do
    aryResult[i] := CopySubStr(Source, i);
  Result := aryResult;
end;

function GetWideString(const s: string): WideString;
var
  arrAnsiChars: array of AnsiChar;
  arrWideChars: array of WideChar;
  nBufferSize, CodePage: Integer;
begin
  CodePage := 936;
  SetLength( arrAnsiChars, Length(s) + 1 );
  StrPLCopy( @arrAnsiChars[0], s, Length(s) );
  nBufferSize := MultiByteToWideChar( CodePage, 0, @arrAnsiChars[0], -1, nil, 0 );
  SetLength( arrWideChars, nBufferSize );
  MultiByteToWideChar( CodePage, 0, @arrAnsiChars[0], -1, @arrWideChars[0], nBufferSize + 1 );
  Result := PWideChar( @arrWideChars[0] );
end;

function GetString(const s: WideString): string;
var
  InputLength, OutputLength, CodePage: Integer;
begin
  CodePage := 936;//GBK
  InputLength := Length(s);
  OutputLength := WideCharToMultiByte(CodePage, 0, PWideChar(s), InputLength, nil, 0, nil, nil);
  SetLength(Result, OutputLength);
  WideCharToMultiByte(CodePage, 0, PWideChar(s), InputLength, PAnsiChar(Result), OutputLength, nil, nil);
end;

function GetCurrentModuleFileName: string;
var
  strCurrDir: array[0..255] of char;
begin
  GetModuleFileName(hInstance, strCurrDir, 255);
  Result := strCurrDir;
end;

function GetLastErrorCode: Integer;
begin
  Result := GlobalLastErrorCode;
end;

function GetLastErrorMessage: string;
begin
  Result := GlobalLastErrorMessage;
end;

function GetRaiseException: boolean;
begin
  Result := GlobalRaiseException;
end;

procedure SetLastErrorCode(const Value: Integer);
begin
  GlobalLastErrorCode := Value;
end;

procedure SetLastErrorMessage(const Value: string);
begin
  GlobalLastErrorMessage := Value;
end;

procedure SetRaiseException(const Value: boolean);
begin
  GlobalRaiseException := Value;
end;

procedure SetLastError(const ErrorMessage: string; const ErrorCode: Integer);
var
  intErrorCode: integer;
begin
  SetLastErrorMessage(ErrorMessage);
  intErrorCode := ErrorCode;
  if ErrorMessage = '' then
    intErrorCode := 0
  else
    if intErrorCode >= 0 then
      intErrorCode := -1;
  SetLastErrorCode(intErrorCode);
end;

procedure SetLastErrorInfo(AException: Exception; const ErrorCode: Integer);
begin
//調(diào)用此過(guò)程處需要按下方式退出當(dāng)前過(guò)程
//由于SetLastErrorInfo可能受GetRaiseException影響而不拋出異常
//則需要通過(guò)Exit退出當(dāng)前過(guò)程以不執(zhí)行后面的代碼
  if not Assigned(AException) then
    exit;
  if AException.InheritsFrom(EAbort) or (CompareText(AException.ClassName, 'EAbort') = 0) then
    SetLastError('', 0)
  else
  begin
    SetLastError(AException.Message, ErrorCode);
    if GetLastErrorMessage <> '' then
      if GetRaiseException then
        raise AException;
  end;
end;

procedure SetLastErrorInfo(const ErrorMessage: string; const ErrorCode: Integer);
begin
  SetLastError(ErrorMessage, ErrorCode);
  if GetLastErrorMessage <> '' then
    if GetRaiseException then
      SetLastErrorInfo(Exception.CreateFmt('%s', [GetLastErrorMessage]), GetLastErrorCode);
end;

procedure SetLastErrorInfo(const ErrorMessageFormat: string;
  const Args: array of const; const ErrorCode: Integer);
begin
  SetLastErrorInfo(Format(ErrorMessageFormat, Args), ErrorCode);
end;

function GetDataSetActiveIndex(DataSet: TDataSet): integer;
var
  tmpDataSource: TDataSource;
  tmpDataLink: TDataLink;
begin
  tmpDataSource := TDataSource.Create(nil);
  tmpDataLink := TDataLink.Create;
  try
    tmpDataSource.DataSet := DataSet;
    tmpDataLink.DataSource := tmpDataSource;
    if tmpDataSource.State in [dsInsert] then
      tmpDataLink.BufferCount := tmpDataSource.DataSet.RecordCount + 1
    else
      tmpDataLink.BufferCount := tmpDataSource.DataSet.RecordCount;
    Result := tmpDataLink.ActiveRecord;
  finally
    tmpDataLink.Free;
    tmpDataSource.Free;
  end;
end;

function GetDataSetFieldValue(DataSet: TDataSet; FieldNames: string; RecordIndex: Integer): Variant;
var
  tmpDataSource: TDataSource;
  tmpDataLink: TDataLink;
  i, intOldActiveRecord: integer;
  strResult: string;
begin
  result := Unassigned;
  intOldActiveRecord := -1;
  tmpDataSource := TDataSource.Create(nil);
  tmpDataLink := TDataLink.Create;
  DataSet.DisableControls;
  try
    tmpDataSource.DataSet := DataSet;
    tmpDataLink.DataSource := tmpDataSource;
    if tmpDataSource.State in [dsInsert] then
      tmpDataLink.BufferCount := tmpDataSource.DataSet.RecordCount + 1
    else
      tmpDataLink.BufferCount := tmpDataSource.DataSet.RecordCount;
    if RecordIndex <= tmpDataLink.BufferCount - 1 then
    begin
      intOldActiveRecord := tmpDataLink.ActiveRecord;
      tmpDataLink.ActiveRecord := RecordIndex;
      if Pos(';', FieldNames) = 0 then
        Result := DataSet.FieldByName(FieldNames).Value
      else
      begin
        Result := '';
        for i := 0 to SubStrCount(FieldNames)do
          Result := Result + DataSet.FieldByName(CopySubStr(FieldNames, i)).AsString + ';';
        if Result <> '' then
        begin
          strResult := Result;
          Delete(strResult, length(strResult), 1);
          Result := strResult;
        end;
      end;
    end;
  finally
    if intOldActiveRecord <> -1 then
      tmpDataLink.ActiveRecord := intOldActiveRecord;
    tmpDataLink.Free;
    tmpDataSource.Free;
    DataSet.EnableControls;
  end;
end;

function CreateClientDataSet(SourceDataSet, TargetDataSet: TCustomClientDataSet): boolean;
begin
  Result := false;
  if (SourceDataSet = nil) or (TargetDataSet = nil)
    or (SourceDataSet = TargetDataSet)
    or (not SourceDataSet.Active) or TargetDataSet.Active then
    exit;
  TargetDataSet.FieldDefs.Clear;
  TargetDataSet.FieldDefs.Assign(SourceDataSet.FieldDefs);
  TargetDataSet.CreateDataSet;
  TargetDataSet.Open;
  Result := True;
end;

procedure ClearList(List: TList; FreeItems: Boolean);
var
  i: integer;
  tmpObject: TObject;
begin
  try
    if FreeItems then
      for i := 0 to List.Count - 1 do
        if Assigned(List.Items[i]) then
          try
            TObject(List.Items[i]).Free;
            List.Items[i] := nil;
          except
          end;
  finally
    List.Clear;
  end;
end;

initialization
  GlobalLastErrorCode := 0;
  GlobalLastErrorMessage := '';
  //DLL中此值為False,OCX中此值為T(mén)rue
  GlobalRaiseException := false;

end.


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产**成人网毛片九色| 国产美女av一区二区三区| 美国十次综合导航| 一本大道久久a久久综合| 99久久精品情趣| 蜜桃视频一区二区三区在线观看 | 亚洲黄色av一区| 日本午夜一区二区| 欧美三级乱人伦电影| 国产精品久99| 精品系列免费在线观看| 91精品欧美久久久久久动漫| 亚洲欧美一区二区视频| 国产成人免费在线视频| 精品久久久久99| 日韩av高清在线观看| 欧美视频一区在线| 亚洲制服丝袜av| 99国产精品一区| 中文字幕一区三区| 成人免费观看视频| 久久久久久久久99精品| 美腿丝袜一区二区三区| 欧美一区二区精美| 日韩激情视频网站| 欧美日韩欧美一区二区| 亚洲第一福利一区| 欧美日韩成人综合天天影院| 亚洲第一狼人社区| 欧美日本一道本在线视频| 亚洲高清不卡在线| 欧美日韩高清不卡| 久久91精品国产91久久小草| 精品奇米国产一区二区三区| 另类欧美日韩国产在线| 337p粉嫩大胆色噜噜噜噜亚洲| 蜜臀av一区二区在线免费观看| 日韩欧美一二区| 国产在线精品一区二区三区不卡 | 麻豆精品在线看| 精品少妇一区二区三区在线视频| 久久99精品久久久久婷婷| 26uuu色噜噜精品一区| 国产黄色91视频| 国产精品国产自产拍高清av王其 | 欧美在线观看禁18| 亚洲一区二区三区中文字幕在线| 欧洲色大大久久| 日精品一区二区| 欧美不卡视频一区| 国产成人精品亚洲777人妖| 1区2区3区欧美| 制服视频三区第一页精品| 激情综合色播五月| 亚洲欧洲av在线| 777亚洲妇女| 国产高清精品网站| 亚洲一区二区三区四区在线观看| 91麻豆精品国产91久久久资源速度 | 欧美成人免费网站| 国产盗摄一区二区三区| 亚洲欧美日韩国产一区二区三区| 欧美性xxxxxxxx| 韩日精品视频一区| 亚洲欧美视频在线观看| 在线播放日韩导航| 国产91精品入口| 亚洲国产一二三| 久久这里都是精品| 欧美在线啊v一区| 激情综合五月天| 亚洲精品伦理在线| 精品久久久久久最新网址| 成人av网址在线| 免费观看一级特黄欧美大片| 1区2区3区国产精品| 日韩午夜电影av| 色av一区二区| 国产高清亚洲一区| 青娱乐精品视频在线| **欧美大码日韩| 欧美国产日韩精品免费观看| 日韩电影在线观看网站| 亚洲国产精品成人综合| 日韩欧美的一区二区| 91久久精品日日躁夜夜躁欧美| 国产原创一区二区三区| 亚洲国产精品久久人人爱蜜臀| 久久久久久久久久美女| 在线成人av网站| 欧美日韩黄视频| 91丝袜美女网| 丁香桃色午夜亚洲一区二区三区| 日韩福利视频导航| 尤物视频一区二区| 亚洲天堂a在线| 亚洲国产精品激情在线观看| 欧美成人精精品一区二区频| 欧美天堂亚洲电影院在线播放| 成人精品gif动图一区| 国产真实乱子伦精品视频| 捆绑紧缚一区二区三区视频| 香蕉加勒比综合久久| 一卡二卡欧美日韩| 亚洲另类在线视频| 亚洲女同ⅹxx女同tv| 国产欧美久久久精品影院| 久久一区二区三区国产精品| 精品国产三级电影在线观看| 日韩欧美激情四射| 日韩欧美中文一区二区| 欧美日韩精品综合在线| 欧美三级电影一区| 精品婷婷伊人一区三区三| 欧美在线视频不卡| 欧美在线free| 欧美精品自拍偷拍| 日韩天堂在线观看| 欧美精品一区二区三区蜜桃| 欧美一区二区三区婷婷月色 | 国产精品不卡视频| 亚洲欧洲美洲综合色网| 亚洲三级免费观看| 亚洲一区二区三区四区在线免费观看| 一区二区在线看| 视频一区视频二区在线观看| 日本午夜精品视频在线观看| 久久99精品久久久久婷婷| 国产成人精品免费网站| 99精品偷自拍| 日本午夜精品视频在线观看| 一卡二卡三卡日韩欧美| 亚洲成av人片www| 日韩制服丝袜av| 九色porny丨国产精品| 国产成人亚洲精品狼色在线| 99久久久久久| 欧美三电影在线| 欧美成人高清电影在线| 欧美国产丝袜视频| 一区二区三区四区不卡在线| 热久久久久久久| 成人网男人的天堂| 欧美日韩国产综合视频在线观看| 日韩一区二区麻豆国产| 日本一区二区成人在线| 亚洲午夜一区二区| 韩国三级在线一区| 色香蕉成人二区免费| 日韩精品一区国产麻豆| 国产精品美女久久久久高潮| 成人黄色免费短视频| 久久成人免费日本黄色| 国产精品1024| 欧美三级三级三级| 欧美国产在线观看| 亚洲午夜在线电影| 精品一区二区三区久久| 色婷婷精品久久二区二区蜜臀av | 成人网男人的天堂| 欧美妇女性影城| 中文字幕日本不卡| 国产自产视频一区二区三区| 99精品久久只有精品| 精品国产乱码久久| 亚洲午夜在线视频| av高清不卡在线| 制服丝袜亚洲精品中文字幕| 中文字幕精品综合| 久久精品国产99国产精品| 欧美主播一区二区三区| 欧美激情一区二区三区在线| 裸体歌舞表演一区二区| 欧美最猛黑人xxxxx猛交| 国产精品女同互慰在线看| 美女在线视频一区| 欧美日韩黄色一区二区| 一区二区在线电影| 99精品热视频| 国产精品久久久久久久久免费桃花 | 美腿丝袜在线亚洲一区| 欧美三级日韩在线| 亚洲综合一区二区三区| a级高清视频欧美日韩| 日韩欧美成人午夜| 午夜精品久久久久久久| 欧美网站大全在线观看| 亚洲欧美日韩一区| 91浏览器在线视频| 最新国产の精品合集bt伙计| 成人美女在线观看| 久久精品男人的天堂| 六月丁香综合在线视频| 日韩一区二区在线免费观看| 丝袜诱惑制服诱惑色一区在线观看 | 欧美精品一区二区精品网| 九九视频精品免费| 久久久另类综合| 国产成人在线色| 国产性色一区二区|