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

📄 publicunit.pas

📁 这是在磁疗用DELPHI编写一套安装软件的程序源码
💻 PAS
字号:
unit PublicUnit;

interface
USES Windows, SysUtils,WinTypes, WinProcs, Classes, Graphics,ShellApi,ADODB, Messages,forms,
     ComObj, ActiveX,Dialogs,OleCtrls, SHDocVw,ShlObj;
  Function GetPath: string;
  procedure FindAddress(WebString:String;WebBrowser:TWebBrowser);
  Function GetSystemPath:String;
  Function GetWinPath:String;                 //得到windows目录
  function DeleteSubStr(S, SubStr: String): String;
  FUNCTION ALLTRIM(STR:STRING):STRING;
  function TestFloat(s : string): string;  
  function IntToLZStr(value : integer;digits : byte) : string;
  Function  ConnectDatabaseAccess(DB:TADOConnection;cFileName,cPswd:String):Boolean;
  function CompactDatabase(const AFileName, APassWord: string): Boolean;
  function GetWinStr1(PosStr,WinStr,EndStr: String;Start:BOOLEAN): string;
  function GetWinStr(PosStr,WinStr: String): boolean;
  function PadL(cVal: string; nWide: integer; cChar: char): string;
  function encrypt(CodeStr:String):String;//简单家密
  function DeCode(codeStr:String):String; //简单解密
  function GetSpecialFolderDir(i: Integer):string;
  procedure CreateShortCut(SourceFileFullName: string;
  DestFileFullName: WideString);  
  var

  IntereConnct:Boolean;
  MyTime : TSystemTime;
  ShowPass:Boolean;
  ShowFrmInt:Integer;
  mOK:Boolean;
  Pass_OK,REG_OK:Boolean;
implementation
function GetSpecialFolderDir(i: Integer):string;
const
   dirName : Array[0..33] of String=
      ('桌面          ','INTERNET        ','程序组       ','控制面板     ',
       '打印机        ','我的文档        ','收藏夹       ','启动组       ',
       '最近文档      ','发送到          ','回收站       ','开始菜单     ',
       '','','','',
       '桌面目录      ','我的电脑        ','网络         ','网上邻居目录 ',
       '字体          ','模板            ','*开始菜单    ','*程序组      ',
       '*启动组       ','*桌面目录       ','应用程序数据 ','PRINTHOOD    ',
       'ALTSTARTUP    ','C_ALTSTARTUP    ','C_FAVORITES  ','Internet缓冲目录 ',
       'COOKIES       ','历史记录        ');
var
    pidl:pItemIDList;
    buffer:array [ 0..255 ] of char ;
  //  i: Integer;
    tmp: String;
begin
  Result:='特殊文件夹路径:'+chr(13)+chr(10);
 // for i:=0 to 29 do
  // begin
    SHGetSpecialFolderLocation(Application.Handle , i, pidl);
    SHGetPathFromIDList(pidl, buffer);    //转换成文件系统的路径
    tmp:=StrPas(buffer);
    if tmp<>'' then
      Result:=Tmp;
  //   Result:=DirName[i]+ tmp + Chr(13)+chr(10);
 // end;
end;
procedure CreateShortCut(SourceFileFullName: string;
  DestFileFullName: WideString);
var
  MyObject  : IUnknown;
  MySLink   : IShellLink;
  MyPFile   : IPersistFile;
begin
  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  with MySLink do
  begin
   SetPath(PChar(SourceFileFullName));
   SetWorkingDirectory(PChar(ExtractFilePath(SourceFileFullName)));
  end;
  MyPFile.Save(PWChar(DestFileFullName), False);
end;
procedure FindAddress(WebString:String;WebBrowser:TWebBrowser);
var
  Flags: OLEVariant;

begin
  Flags := 0;
  WebBrowser.Navigate(WideString(WebString), Flags, Flags, Flags, Flags);
end;
function encrypt(CodeStr:String):String;
var i:integer;
begin
  result:=codeStr;
  for i:=1 to length(Result) do
    result[i]:=Succ(Succ(Result[i]));
end;

function DeCode(CodeStr:String):String;
var i:integer;
begin
  result:=CodeStr;
  for i:=1 to Length(Result) do
    Result[i]:=pred(pred(Result[i]));
end;
function PadL(cVal: string; nWide: integer; cChar: char): string;    //填充字符(cChar)
var
  i1,nStart: integer;
begin
  if length(cVal) < nWide then
    begin
      nStart:=length(cVal);
      for i1:=nStart to nWide-1 do
        cVal:=cChar+cVal;
    end;
  PadL:=cVal;
end;
function padleft(S: String; N: Integer): String;           //左边格式化字符串
begin
  While Length(S) < N do
    Insert(' ',S,1);
  Result:=S
end;
function GetWinStr(PosStr,WinStr: String): boolean;
  var
  s: String;
  ETpos: Integer;
begin
  GetWinStr:=False;
  ETpos:= pos(PosStr, WinStr);
  if ETpos > 1 then
  begin
//     s:= copy(WinStr,ETpos,Length(WinStr));
//     GetWinStr:=S;
  GetWinStr:=True;
  end ;
end;
function GetWinStr1(PosStr,WinStr,EndStr: String;Start:BOOLEAN): string;
  var
  s: String;
  ETpos1: Integer;
  ETpos2: Integer;

begin
//  GetWinStr:=lse;
  ETpos1:= pos(PosStr, WinStr);
  ETpos2:= pos(EndStr, WinStr);
  GetWinStr1:='';
  if (ETpos1 >= 1) and (ETpos2>=ETpos1)then
  begin
   if Start then
     s:= copy(WinStr,ETpos1,(ETPOS2-ETPos1))
   else
     s:=copy(WinStr,ETpos1+length(posstr),(ETPOS2-ETPos1)-length(posstr));
     GetWinStr1:=S;
//  GetWinStr:=True;
  end ;
end;

function padright(S: String; N: Integer): String;    //右边格式化字符串
begin
  While Length(S) < N do
    Insert(' ',S,Length(S)+1);
  Result:=S
end;
//金额小写转大写的子程序
Function  XxToDx(const hjnum:real):String;

var Vstr,zzz,cc,cc1,Presult:string;

    xxbb:array[1..12]of string;

    uppna:array[0..9] of string;

    iCount,iZero,vPoint,vdtlno:integer;

begin

  //* 设置大写中文数字和相应单位数组 *//

  xxbb[1]:=' 亿 ';

  xxbb[2]:=' 仟 ';

  xxbb[3]:=' 佰 ';

  xxbb[4]:=' 拾 ';

  xxbb[5]:=' 万 ';

  xxbb[6]:=' 仟 ';

  xxbb[7]:=' 佰 ';

  xxbb[8]:=' 拾 ';

  xxbb[9]:=' 元 ';

  xxbb[10]:='.';

  xxbb[11]:=' 角 ';

  xxbb[12]:=' 分 ';

  uppna[0]:=' 零 ';

  uppna[1]:=' 壹 ';

  uppna[2]:=' 贰 ';

  uppna[3]:=' 叁 ';

  uppna[4]:=' 肆 ';

  uppna[5]:=' 伍 ';

  uppna[6]:=' 陆 ';

  uppna[7]:=' 柒 ';

  uppna[8]:=' 捌 ';

  uppna[9]:=' 玖 ';

  Str(hjnum:12:2,Vstr);

  cc:='';

  cc1:='';

  zzz:='';

  result:='';

  presult:='';

  iZero:=0;

  vPoint:=0;

  for iCount:=1 to 10 do

    begin

      cc:=Vstr[iCount];

      if cc<>' ' then

        begin

          zzz:=xxbb[iCount];

          if cc='0' then

          begin

            if iZero<1 then  //* 对“零”进行判断 *//

               cc:=' 零 '

            else

               cc:='';

            if iCount=5 then     //* 对万位“零”的处理 *//

               if copy(result,length(result)-1,2)=' 零 ' then

                  result:=copy(result,1,length(result)-2)+xxbb[iCount]

+' 零 '

               else

                  result:=result+xxbb[iCount];

            cc1:=cc;

            zzz:='';

            iZero:=iZero+1;

          end

          else

            begin

              if cc='.' then

                begin

                  cc:='';

                  if (cc1='') or (cc1=' 零 ')  then

                  begin

                     Presult:=copy(result,1,Length(result)-2);

                     result:=Presult;

                     iZero:=15;

                  end;

                  if iZero>=1 then

                     zzz:=xxbb[9]

                  else

                     zzz:='';

                  vPoint:=1;

                end

              else

                begin

                  iZero:=0;

                  cc:=uppna[StrToInt(cc)];

                end

            end;

          result:=result+(cc+zzz)

        end;

    end;

    If Vstr[11]='0' then   //* 对小数点后两位进行处理 *//

    begin

       if Vstr[12]<>'0' then

       begin

          cc:=' 零 ';

          result:=result+cc;

          cc:=uppna[StrToInt(Vstr[12])];

          result:=result+(uppna[0]+cc+xxbb[12]);

       end

    end

    else

    begin

       if iZero=15 then

       begin

          cc:=' 零 ';

          result:=result+cc;

       end;

       cc:=uppna[StrToInt(Vstr[11])];

       result:=result+(cc+xxbb[11]);

       if Vstr[12]<>'0' then

       begin

          cc:=uppna[StrToInt(Vstr[12])];

          result:=result+(cc+xxbb[12]);

       end;

    end;

  result:=result+' 正 ';

end;
//Memo1.Lines.Add(IHtmlDocument2(WebBrowser1.Document).Body.OuterHtml);  //直接显示网页源代码
 //,MSHTML
FUNCTION RTOI( RealNum: REAL ): LONGINT;//转换REAL到LONGINT
VAR
   s: STRING;
   l: LONGINT;
   i: INTEGER;
BEGIN
     STR( RealNum:17:2,s );
 //    s :=Left(s, LENGTH(s) - 3);
     s:=Copy(s,1,LENGTH(s) - 3);
     VAL(s, l, i );
     RTOI:=l;
END;

function GetCurrency(number: PChar): string;      //把一个数值变成一个本地的金额字符串?

var

  tmpStr: string;

begin

  SetLength(tmpStr, 255);

  GetCurrencyFormat(LOCALE_SYSTEM_DEFAULT, 0, number, nil, PChar(tmpStr), Length(tmpStr));

  Result := tmpStr;

end;


function qd0str(const count,num:integer):String; 
Var 
 s1,s2:String; 
begin 
 s1:=IntToStr(Num); 
 s2:='00000000000000000000'; 
 if (Length(s1)>=count) then 
  s2:='' 
 else if(count>20) then 
  SetLength(S2,20-Length(s1)) 
 else 
  SetLength(S2,count-Length(s1)); 

 Result:=S2+S1; 
end; 

function IntToLZStr(value : integer;digits : byte) : string;
  var
  Res : string;

begin
  Res:=IntToStr(value);
  while Length(Res)<digits do
    Insert('0',res,1);
  IntToLZStr:=Res;
end;
Function GetWinPath:String;                 //得到windows目录
 var
    MySysPath : PCHAR ;
 begin
   GetMem(MySysPath,255);
   GetWindowsDirectory(MySysPath,255);
   Result:=StrPas(MySysPath);
   FreeMem(MySysPath,255);
   
 end;


Function GetSystemPath:String;                 //得到系统目录
 var
    MySysPath : PCHAR ;
 begin
   GetMem(MySysPath,255);
   GetSystemDirectory(MySysPath,255);
   Result:=StrPas(MySysPath);
   FreeMem(MySysPath,255);
   
 end;

function SetTime(Year,Month,Day,Hour,Min,Sec:WORD):BOOLEAN ; //更改系统时间
begin
  FillChar (MyTime, sizeof(MyTime), #0);
  MyTime.wYear := YEAR;
  MyTime.wMonth := MONTH;
  MyTime.wDay := DAY;
  MyTime.wHour:=Hour;
  MyTime.wMinute:=Min;
  MyTime.wSecond:=Sec;  
  // fill out more.. important!
  if not SetSystemTime (MyTime) then
    ShowMessage('更改系统时间错误!');
end;

function CompactDatabase(const AFileName, APassWord: string): Boolean;     //压缩ACCESS数据库
const
  SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
    + 'Jet OLEDB:Database Password=%s;';
var
  SPath: string;
  SFile: array[0..254] of Char;
  STempFileName: string;
  JE: OleVariant;

  function GetTempDir: string;
  var
    Buffer: array[0..MAX_PATH] of Char;
  begin
    ZeroMemory(@Buffer, MAX_PATH);
    GetTempPath(MAX_PATH, Buffer);
    Result := IncludeTrailingBackslash(StrPas(Buffer));
  end;

begin
  Result := False;
  SPath := GetTempDir; //取得Windows的Temp路径
  GetTempFileName(PChar(SPath), '~ACP', 0, SFile); //取得Temp文件名,Windows将自动建立0字节文件
  STempFileName := SFile; //PChar->String
  if not DeleteFile(PChar(STempFileName)) then Exit; //删除Windows建立的0字节文件
  try
    JE := CreateOleObject('JRO.JetEngine'); //建立OLE对象,函数结束OLE对象超过作用域自动释放
   OleCheck(JE.CompactDatabase(Format(SConnectionString, [AFileName, APassWord]),
      Format(SConnectionString, [STempFileName, APassWord]))); //压缩数据库
    //复制并覆盖源数据库文件,如果复制失败则函数返回假,压缩成功但没有到函数的功能
    Result := CopyFile(PChar(STempFileName), PChar(AFileName), False);
    DeleteFile(PChar(STempFileName)); //删除临时文件
  except
    //压缩失败
  end;
end;

Function  ConnectDatabaseAccess(DB:TADOConnection;cFileName,cPswd:String):Boolean;  //连接ACCES数据库
var
Str:String;
begin
  result := false;
  Str:=Format('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False;'
              +'Jet OLEDB:Database Password=%s',[cFileName,cPswd]);

  DB.Connected:=false;
  DB.ConnectionString := Str;
  try
    DB.Connected:=True;
    Result := true;
  except
    on e:exception do
    begin
      str := Format('不能连接数据库:'#13'连接串:%s'#13'错误:%s',
      [Str,e.Message]);

      MessageBox(Application.Handle,PChar(str),
         Pchar('提示'), MB_OK or MB_ICONINFORMATION);
      exit;
    end;
  end;
end;

FUNCTION ALLTRIM(STR:STRING):STRING;  //去掉字符串的两边空格
VAR
   LENG:WORD;
   RESU:STRING;
   I:WORD;
BEGIN
   LENG:=LENGTH(STR);
   RESU:=STR;
   I:=1;
   WHILE (COPY(RESU,LENG-I+1,1)=#$20) AND (I<=LENG) DO
     BEGIN
       I:=I+1;
     END;
   RESU:=COPY(RESU,1,LENG-I+1);
   LENG:=LENGTH(RESU);
   I:=1;
   WHILE (COPY(RESU,I,1)=#$20) AND (I<=LENG) DO
     BEGIN
       I:=I+1;
     END;
   ALLTRIM:=COPY(RESU,I,LENG-I+1);
END;
function DeleteSubStr(S, SubStr: String): String;

begin
  while Pos(SubStr, S) <> 0 do
    Delete(S, Pos(SubStr, S), Length(SubStr));
  Result := S;
end;

function TestFloat(s : string): string;
var
  i : integer;
  x : double;
begin
  i := System.Pos(',',s);
  if i<> 0 then
  S := DeleteSubStr(S, ',');
 result:=s;
end;

 Function GetPath: string;
  begin
   Result:=ExtractFilePath(ParamStr(0));
 end;

end.

⌨️ 快捷键说明

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