⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 global.pas

📁 MD5加密与解密的说明文件与,烦琐的加密不能解密
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{功能描述: 常用的一些过程和功能函数
 创建人员:wangzhihong
 创建日期: 2005-07-25
 调用的过程与函数:
 修改人员:
 修改日期:
 修改原因:
 修改结果:
 版本说明: 1.0}


unit Global;

interface
uses
  SysUtils,windows,Forms,Classes,Dialogs,//dxDBGrid,
  Registry,DBGridEh,Sockets,DBGridEhImpExp,WinSock, WinInet,Clipbrd,DB, ADODB;

{常用对话框的定义}
procedure Prompt(StrMsg : String);
procedure Alert(StrMsg : String);
function Confirm(StrMsg : String) : Boolean;
function ConfirmEx(StrMsg : String; DefaultButton : Integer) : Integer;



//打开DataSet  指定query和SQL语句
function OpenDataSetEx(DataSet: TADOQuery; szSql: string): Boolean;
//返回数据库是否为空
function GetDataSetEmptyEx(sSql: string): Boolean;
//高级执行Sql
function ExecSqlEx(DataSet: TADOQuery; var sSql: string): Boolean;






{取得计算机IP地址}
function LocalIp: String;
{根据IP地址取得计算机名}
function GetMyComputerName(IP: String): String;
{取得计算机的IP地址--2}
function GetIpAddress():String;
{取得计算机名--2}
function GetMyPCName():string;
{列出所有工作组名称}
Function GetServerList( var List : TStringList ) : Boolean;
{列出当前工作组中所有计算机名称}
Function GetUsers(GroupName : string; var List : TStringList ) : Boolean;






{小写转为大写}
function NumToChar(const n: currency): string;

{金额五舍六入}
function Round5to6(const value:currency):currency;

{根据身份证号取得出生日期 }
function GetBirthdayByIdNo(const PersonalID:string):string;

{写日志文件 }
procedure ActionLog(showtime:boolean;Msg:string);

{汉字转换为拼音 }
function GetHzPy(const AHzStr: string): string;

//将dbgrid中的数据导出,支持多种格式
procedure ExportToExcel(DBGridEh:TDBGridEh);overload;

//2005-08-10定义通用多格式导出
procedure ChinYinOutput(const dialogfilename:string;DBGrideh:TDBGridEh);overload;



//----------------------------------------------------------------------------------------------------------------------------------
implementation

type
  PNetResources = ^TNetReSource;



  //****************常用对话框的定义**********************************************
procedure Prompt(StrMsg : String);
begin
	Application.MessageBox(PChar(StrMsg), 'ChinYin - 提示', MB_ICONINFORMATION or MB_SYSTEMMODAL);
end;

Procedure Alert(StrMsg : String);
begin
	Application.MessageBox(PChar(StrMsg), 'ChinYin - 警告', MB_ICONWARNING or MB_SYSTEMMODAL);
end;

Function Confirm(StrMsg : String) : Boolean;
begin
	Result := ID_YES = Application.MessageBox(pChar(strMsg), 'ChinYin - 确认',	MB_ICONQUESTION + MB_YESNO + MB_SYSTEMMODAL);
end;

function ConfirmEx(StrMsg : String; DefaultButton : Integer) : Integer;
var
	nDefaultButton : Integer;
begin
	if DefaultButton = 1 then
		nDefaultButton := mb_DefButton1
	else if DefaultButton = 2 then
		nDefaultButton := mb_DefButton2
	else
		nDefaultButton := mb_DefButton3;
  //according to the return values to set focus  2005-08-03adding
	Result := Application.MessageBox(PChar(StrMsg),'ChinYin - 请确认',MB_ICONQUESTION + MB_YESNOCANCEL + MB_SYSTEMMODAL + nDefaultButton);
end;


//**********************小写转为大写*******************************************
function NumToChar(const n: currency): string; //可以到万亿,并且可以随便扩大范围
const
  cNum: WideString = '零壹贰叁肆伍陆柒捌玖--万仟佰拾亿仟佰拾万仟佰拾元角分';
  cCha:array[0..1, 0..12]of string =
  (( '零元','零拾','零佰','零仟','零万','零亿','亿万','零零零','零零','零万','零亿','亿万','零元'),
  ( '元','零','零','零','万','亿','亿','零','零','万','亿','亿','元'));
var
  i : Integer;
  sNum,sTemp : WideString;
begin
  result :='';
  sNum := format('%15d',[round(n * 100)]);
  for i := 0 to 14 do
  begin
    stemp := copy(snum,i+1,1);
    if stemp=' ' then continue
    else result := result + cNum[strtoint(stemp)+1] + cNum[i+13];
    end;
    for i:= 0 to 12 do
    Result := StringReplace(Result, cCha[0,i], cCha[1,i], [rfReplaceAll]);
    if pos('零分',result)=0
    then Result := StringReplace(Result, '零角', '零', [rfReplaceAll])
  else Result := StringReplace(Result, '零角','整', [rfReplaceAll]);
    Result := StringReplace(Result, '零分','', [rfReplaceAll]);
end;

//***************** ****金额五舍六入********************************************
function Round5to6(const value:currency):currency;
begin
  result:=Trunc(abs(value)*10+0.4)/10
end;

//*******************根据身份证号取得日期***************************************
function GetBirthdayByIdNo(const PersonalID:string):string;
begin
 if (Length(PersonalID)<>15) and (Length(PersonalID)<>18) then
 begin
          Prompt('身份证位数不对,请重新输入!');
          Exit;
 end;
 if PersonalID <> '' then
 begin
  if Length(PersonalID) = 15 then
     result := '19' + Copy(PersonalID,7,2) + '-' + Copy(PersonalID,9,2) + '-'  + Copy(PersonalID,11,2)
  else
     result := Copy(PersonalID,7,4)+ '-' + Copy(PersonalID,11,2) + '-'+ Copy(PersonalID,13,2);
 end;
end;

//*********************写日志文件***********************************************
procedure ActionLog(showtime:boolean;Msg:string);
var
  filename:string;
  logfile:Textfile;
begin
  filename:=changefileext(ExtractFilePath(Application.ExeName)+'AppSys\'+formatdatetime('YYYYMMDD',date()),'.log');
  try
    assignfile(logfile,filename);
    if FileExists(filename) then
      append(logfile)
    else
      rewrite(logfile);
    if(showtime) then
      writeln(logfile,datetimetostr(now)+':'+msg)
    else
      writeln(logfile,msg);
  finally
    closefile(logfile);
  end;
end;

//**************************汉字转拼音******************************************
function GetHzPy(const AHzStr: string): string;
const
 ChinaCode: array[0..25, 0..1] of Integer = ((1601, 1636), (1637, 1832), (1833, 2077),
   (2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000),
   (2787, 3105), (3106, 3211), (3212, 3471), (3472, 3634), (3635, 3722), (3723, 3729),
   (3730, 3857), (3858, 4026), (4027, 4085), (4086, 4389), (4390, 4557), (9999, 0000),
   (9999, 0000), (4558, 4683), (4684, 4924), (4925, 5248), (5249, 5589));
var
 i, j, HzOrd: integer;
begin
 i := 1;
 while i <= Length(AHzStr) do
 begin
   if (AHzStr[i] >= #160) and (AHzStr[i + 1] >= #160) then
   begin
     HzOrd := (Ord(AHzStr[i]) - 160) * 100 + Ord(AHzStr[i + 1]) - 160;
     for j := 0 to 25 do
     begin
       if (HzOrd >= ChinaCode[j][0]) and (HzOrd <= ChinaCode[j][1]) then
       begin
         Result := Result + char(byte('A') + j);
         break;
       end;
     end;
     Inc(i);
   end else Result := Result + AHzStr[i];
   Inc(i);
 end;
end;


//*************************利用RX导出多种数据格式*******************************
{procedure ExportToExcel(dxDBGrid:TdxDBGrid);
var
  dlg:TSaveDialog;
begin
  dlg:=TSaveDialog.Create(nil);
  try
    dlg.DefaultExt:='xls';
    dlg.Filter:='Excel Files(*.xls)|*.XLS';
    if dlg.Execute then
      dxDBGrid.SaveToXLS(dlg.FileName,True);
  finally
    dlg.Free;
  end;
end; }
//*************************数据库操作相关的函数********************************
function OpenDataSetEx(DataSet: TADOQuery; szSql: string): Boolean;
begin
  Result := True;
  try
    if DataSet.Active then
      DataSet.Close;
    DataSet.SQL.Clear;
    DataSet.Parameters.Clear;
    DataSet.SQL.Add(szSql);
    DataSet.Open;
  except
    Result := False;
  end;
end;
//返回数据库是否为空数据库
function GetDataSetEmptyEx(sSql: string): Boolean;
var
  ADOSetTmp: TADOQuery;
begin
  ADOSetTmp := TADOQuery.Create(nil);
  OpenDataSetEx(ADOSetTmp, sSql);
  Result := ADOSetTmp.IsEmpty;
  ADOSetTmp.Close;
  ADOSetTmp.Free;
end;
function ExecSqlEx(DataSet: TADOQuery; var sSql: string): Boolean;
var
  TempCommand: TADOCommand;
begin
  TempCommand := nil;
  if Trim(sSql) = '' then
  begin
    Result := False;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -