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

📄 unifunc.pas

📁 查询邮政区号、身份证号、手机号的归属地
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit uniFunc;

interface

uses
  Windows, Forms, Controls, SysUtils, Messages, Classes, Registry, IniFiles,
  ActiveX, ShlObj, ComObj, SHDocVw, MSHTML, WinInet, UrlMon, ComCtrls;

  function Big5ToGB(BIG5Str:String): AnsiString;
  function GBToBig5(GBStr:String): AnsiString;
  function GBChtToChs(GBStr:String): AnsiString;
  function GBChsToCht(GBStr:String): AnsiString;
  function FrameToTime(Frame:Int64):String;
  function TimeToSec(_Time:TTime):Int64;overload;
  function TimeToSec(sTime:String='0:00:00'):Int64;overload;
  function TimeToMSec(_Time:TTime):Int64;overload;
  function TimeToMSec(sTime:String='0:00:00'):Int64;overload;
  function SecToTime(Sec:Integer):String;
  //function SecToTime(Sec:Integer):TTime;
  function MSecToTime(MSec:Int64):String;
  function CompareVersion(AppVer,NewVer:String):Boolean;
  function Iif(Expression:Boolean;Str1,Str2:String):String;overload;
  function Iif(Expression:Boolean;Int1:Integer;Int2:Integer):Integer;overload;
  function IsFlash(SouSFP:String):Boolean;   // 判断是否为 EXE 型的 Flash 文件
  function ExtractRes(ResType,ResName,ResNewName:String):Integer;
  function WinExecAndWait32(FileName,Options:String;Visibility:integer):Integer;
  function BrowseFolder(Title:String;OwnerHandle:THandle;var Dir:String):Boolean;
  function FindFiles(const Path,Mask:String;var FileList:TStrings;const SubFolder,SubFolderMax:Word;var bSearchStop:Boolean;Handle:THandle=0):Integer;
  function ParsePath(const AppPath,Path:String):String;
  function GetType(const FileName:String):Integer;  // 取相应的图标
  function RightStr(Str:String;SubLen:Integer):String;
  function PosEx(const SubString,Str:String;var SubIndex:TStrings):Integer;
  function PosR(const SubString,Str:String):Integer;
  procedure TimeDelay(Interval:Cardinal=1000);

  function ReadRegInteger(MainKey:DWORD;SubKey:String;CodeName:String):Integer;
  function ReadRegString(MainKey:DWORD;SubKey:String;CodeName:String):String;
  Procedure WriteRegInteger(MainKey:DWORD;SubKey:String;CodeName:String;CodeValue:Integer);
  Procedure WriteRegString(MainKey:DWORD;SubKey:String;CodeName:String;CodeString:String);
  Procedure DeleteRegValue(MainKey:DWORD;SubKey:String;ValueName:String);
  Procedure DeleteRegSubKey(MainKey:DWORD;SubKey:String;SubName:String);

  function ReadIni_Int(iniFileName:String; OptionName:String;KeyName:String):Integer;
  function ReadIni_Str(iniFileName:String; OptionName:String;KeyName:String):String;
  procedure WriteIni_Int(iniFileName:String; OptionName:String;KeyName:String;KeyCode:Integer);
  procedure WriteIni_Str(iniFileName:String; OptionName:String;KeyName:String;KeyCode:String);
  function ExtractFolder(const strPath:String;var Folders:TStrings):Integer;
  function MkDirEx(PathName:String):Boolean;
  function RepairURL(const URL:String):String;
  function SimURL(const URL:String):String;
  function ComposeURL(const URL:String):String;
  function GetURL(const URLs:String;var URLList:TStrings):Integer;overload;
  function GetURL(var WebBrowser:TWebBrowser;var Link,LinkName:TStrings):String;overload;
  function GetMediaFile(const URL:String;var FileName:String;var bBoBoMedia:Boolean):Boolean;

  function SetKPlay(RegKey,FileName:String):Boolean;
  function SetIEMenu(MenuCaption,FileName:String;CreateMenu:Boolean=True):Boolean;
  function SetUnInstall(AppTitle,FileName,AppDescriptive:String):Boolean;
  procedure ShellLink(const DestPath,LinkName,LinkAppPath,LinkArgs,Description:String;IconIndex:Integer=0);

  function InternetConnected():Boolean;
  function DownloadFile(const URL,FileName:String):Boolean;
  function ClearIECache():Boolean;
  function SetFileAssociate(FileExt,FileType,Description,ExeFile:String):Boolean;
  function SimString(SubStr,NewStr,Str:String):String;
  
const
  NewLine='\n'; //换行标识符,加载语言包时要转换成 #13#10
  vbCrLf=#13#10; //链接换行符(两个链之间的分隔符)
  // 以下是支持的文件格式
  isIni      =99;  { 打开的是列表文件,要根据其内容添加到播放列表中 }
  isError    =-1;  { 不支持的文件格式,无返回图标 }
  isCD       =0;   { CD 音乐 }
  isExe      =1;   { Exe 格式的 Flash 动画 }
  isSwf      =2;   { Swf 格式的 Flash 动画 }
  isMidi     =3;   { (MID / RIM) Midi 音乐 }
  isMp3      =4;   { Mp3 歌曲 }
  isReal     =5;   { (Ra / Rm) RealAudio 网络音/视频 }
  isUrl      =6;   { 网络上的动画/音频/视频 }
  isVideo    =7;   { (DAT / AVI / MPG / MPEG) 电影文件 }
  isMusic    =8;   { MPEG 音频 }
  isWave     =9;   { Wav 声音文件 }
  isMp4A     =10;  { Mp4 歌曲 }
  isMp4V     =11;  { Mp4 视频 }
  isAIFF     =12;  { AIFF 音频 }
  isAU       =13;  { AU 音频}
  isDShow    =14;  { DirectShow }
  isQTime    =15;  { QuickTime }
  isDVD      =16;  { DVD }

implementation

//内码转换
{进行big5转GB内码}
function Big5ToGB(BIG5Str:String): AnsiString;
var
  Len: Integer;
  pBIG5Char: PChar;
  pGBCHSChar: PChar;
  pGBCHTChar: PChar;
  pUniCodeChar: PWideChar;
begin
  //String -> PChar
  pBIG5Char := PChar(BIG5Str);
  Len := MultiByteToWideChar(950, 0, pBIG5Char, -1, nil, 0);
  GetMem(pUniCodeChar, Len * 2);
  ZeroMemory(pUniCodeChar, Len * 2);
  //Big5 -> UniCode
  MultiByteToWideChar(950, 0, pBIG5Char, -1, pUniCodeChar, Len);
  Len := WideCharToMultiByte(936, 0, pUniCodeChar, -1, nil, 0, nil, nil);
  GetMem(pGBCHTChar, Len * 2);
  GetMem(pGBCHSChar, Len * 2);
  ZeroMemory(pGBCHTChar, Len * 2);
  ZeroMemory(pGBCHSChar, Len * 2);
  //UniCode->GB CHT
  WideCharToMultiByte(936, 0, pUniCodeChar, -1, pGBCHTChar, Len, nil, nil);
  //GB CHT -> GB CHS
  LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len);
  Result := string(pGBCHSChar);
  FreeMem(pGBCHTChar);
  FreeMem(pGBCHSChar);
  FreeMem(pUniCodeChar);
end;

{进行GB转BIG5内码}
function GBToBig5(GBStr:String): AnsiString;
var
  Len: Integer;
  pGBCHTChar: PChar;
  pGBCHSChar: PChar;
  pUniCodeChar: PWideChar;
  pBIG5Char: PChar;
begin
  pGBCHSChar := PChar(GBStr);
  Len := MultiByteToWideChar(936, 0, pGBCHSChar, -1, nil, 0);
  GetMem(pGBCHTChar, Len * 2 + 1);
  ZeroMemory(pGBCHTChar, Len * 2 + 1);
  //GB CHS -> GB CHT
  LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);
  GetMem(pUniCodeChar, Len * 2);
  ZeroMemory(pUniCodeChar, Len * 2);
  //GB CHT -> UniCode
  MultiByteToWideChar(936, 0, pGBCHTChar, -1, pUniCodeChar, Len * 2);
  Len := WideCharToMultiByte(950, 0, pUniCodeChar, -1, nil, 0, nil, nil);
  GetMem(pBIG5Char, Len);
  ZeroMemory(pBIG5Char, Len);
  //UniCode -> Big5
  WideCharToMultiByte(950, 0, pUniCodeChar, -1, pBIG5Char, Len, nil, nil);
  Result := string(pBIG5Char);
  FreeMem(pBIG5Char);
  FreeMem(pGBCHTChar);
  FreeMem(pUniCodeChar);
end;

{进行GBK繁体转简体}
function GBChtToChs(GBStr:String): AnsiString;
var
  Len: Integer;
  pGBCHTChar: PChar;
  pGBCHSChar: PChar;
begin
  pGBCHTChar := PChar(GBStr);
  Len := MultiByteToWideChar(936, 0, pGBCHTChar, -1, nil, 0);
  GetMem(pGBCHSChar, Len * 2 + 1);
  ZeroMemory(pGBCHSChar, Len * 2 + 1);
  //GB CHS -> GB CHT
  LCMapString($804, LCMAP_SIMPLIFIED_CHINESE, pGBCHTChar, -1, pGBCHSChar, Len * 2);
  Result := string(pGBChsChar);
  //FreeMem(pGBCHTChar);
  FreeMem(pGBCHSChar);
end;

{进行GBK简体转繁体}
function GBChsToCht(GBStr:String): AnsiString;
var
  Len: Integer;
  pGBCHTChar: PChar;
  pGBCHSChar: PChar;
begin
  pGBCHSChar := PChar(GBStr);
  Len := MultiByteToWideChar(936, 0, pGBCHSChar, -1, nil, 0);
  GetMem(pGBCHTChar, Len * 2 + 1);
  ZeroMemory(pGBCHTChar, Len * 2 + 1);
  //GB CHS -> GB CHT
  LCMapString($804, LCMAP_TRADITIONAL_CHINESE, pGBCHSChar, -1, pGBCHTChar, Len * 2);
  Result := string(pGBCHTChar);
  FreeMem(pGBCHTChar);
  //FreeMem(pGBCHSChar);
end;

//把帧数转化成时间
function FrameToTime(Frame:Int64):String;
var
  _timeStamp:TTimeStamp;
  _dateTime:TDateTime;
  _msec:Comp;
begin
  _msec:=Trunc(Frame/10000);
  _timeStamp:=MSecsToTimeStamp(_msec);
  _timeStamp.Date:=1;
  _dateTime:=TimeStampToDateTime(_timeStamp);
  Result:=TimeToStr(_dateTime);
end;
//把时间转换成秒
function TimeToSec(_Time:TTime):Int64;
var
  _timeStamp:TTimeStamp;
begin
  _timeStamp:=DateTimeToTimeStamp(_Time);
  _timeStamp.Date:=1;
  Result:=_timeStamp.Time div 1000; //毫秒转化为秒
end;
//把时间转化成秒
function TimeToSec(sTime:String='0:00:00'):Int64;
var
  _timeStamp:TTimeStamp;
begin
  try
    _timeStamp:=DateTimeToTimeStamp(StrToTime(sTime));
    _timeStamp.Date:=1;
    Result:=_timeStamp.Time div 1000; //毫秒转化为秒
  except
    Result:=-1;
  end;
end;
//把时间转换成毫秒
function TimeToMSec(_Time:TTime):Int64;
var
  _timeStamp:TTimeStamp;
begin
  _timeStamp:=DateTimeToTimeStamp(_Time);
  _timeStamp.Date:=1;
  Result:=_timeStamp.Time; //毫秒
end;
//把时间转换成毫秒
function TimeToMSec(sTime:String='0:00:00'):Int64;
var
  _timeStamp:TTimeStamp;
begin
  try
    _timeStamp:=DateTimeToTimeStamp(StrToTime(sTime));
    _timeStamp.Date:=1;
    Result:=_timeStamp.Time; //毫秒
  except
    Result:=-1; //参数错误
  end;
end;

//把秒转化成时间
function SecToTime(Sec:Integer):String;
var
  _timeStamp:TTimeStamp;
begin
  _timeStamp:=MSecsToTimeStamp(Sec*1000); //秒转为毫秒
  _timeStamp.Date:=1;
  Result:=TimeToStr(TimeStampToDateTime(_timeStamp));
end;

//把毫秒转化成时间
function MSecToTime(MSec:Int64):String;
var
  _timeStamp:TTimeStamp;
begin
  _timeStamp:=MSecsToTimeStamp(MSec);
  _timeStamp.Date:=1;
  Result:=TimeToStr(TimeStampToDateTime(_timeStamp));
end;

function CompareVersion(AppVer,NewVer:String):Boolean;
var
  Version1,Version2:TStrings;
  Major,Minor,Release,Build:Integer;
  fMajor,fMinor,fRelease,fBuild:Integer;
begin //比较版本号
  Result:=False;
  if (AppVer<>'') and (NewVer<>'') then
  begin
    Version1:=TStringList.Create;
    Version2:=TStringList.Create;
    try
      ExtractStrings(['.'],[' '],PChar(AppVer),Version1);
      ExtractStrings(['.'],[' '],PChar(NewVer),Version2);
      try  //3.0.1.100   2.1.1.150
        //现有版号
        fMajor:=StrToInt(Version1.Strings[0]);
        fMinor:=StrToInt(Version1.Strings[1]);
        fRelease:=StrToInt(Version1.Strings[2]);
        fBuild:=StrToInt(Version1.Strings[3]);
        //新版本号
        Major:=StrToInt(Version2.Strings[0]);
        Minor:=StrToInt(Version2.Strings[1]);
        Release:=StrToInt(Version2.Strings[2]);
        Build:=StrToInt(Version2.Strings[3]);
        // 比较版本号
        if      fMajor>Major then Result:=True     // 主版本号
        else if fMajor<Major then Result:=False
        else if fMinor>Minor then Result:=True     // 副版本号
        else if fMinor<Minor then Result:=False
        else if fRelease>Release then Result:=True // 修正号
        else if fRelease<Release then Result:=False
        else if fBuild>Build then Result:=True     // 编译号
        else if fBuild<Build then Result:=False
        else Result:=True;                         // 相同的版本号
      except
        Result:=False;
      end;
    finally
      Version1.Free;
      Version2.Free;
    end;
  end;
end;

{ 如果"Expression"为 True 返回 Int1 否则返回 Int2}
function Iif(Expression:Boolean;Int1:Integer;Int2:Integer):Integer;
begin
  if Expression then
    Result:=Int1
  else
    Result:=Int2;
end;

function Iif(Expression:Boolean;Str1,Str2:String):String;
begin
  if Expression then
    Result:=Str1
  else
    Result:=Str2;
end;

function IsFlash(SouSFP:String):Boolean;
var
  SourceStream:TFileStream;
  SwfFileSize:Cardinal;
begin
  try
    SourceStream:=TFileStream.Create(SouSFP,fmOpenRead or fmShareExclusive);  // 打开EXE形式的源文件
    try
      SourceStream.Seek(-2*Sizeof(Integer), soFromEnd);  // 读取文件标志
      SourceStream.ReadBuffer(SwfFileSize, sizeof(integer));
      Result:=(SwfFileSize=$FA123456);// 判断读到的文件标志是否和FA123456相同,判断是否是Macromedia官方格式的Flash文件
    finally
      SourceStream.Free; // OK,释放文件流
    end;
  except
    Result:=False;
  end;
end;

function ExtractRes(ResType,ResName,ResNewName:String):Integer;
var
  Res:TResourceStream;
  ResPath:String;
begin
  if Length(Trim(ResNewName))>=4 then
  begin
    ResPath:=ExtractFilePath(ResNewName);
    ResPath:=Iif(RightStr(ResPath,1)='\',Copy(ResPath,1,Length(ResPath)-1),ResPath);
    if MkDirEx(ResPath) then // 如果目录不存在就创建它
    begin
      try
        Res:=TResourceStream.Create(Hinstance,ResName,Pchar(ResType));
        try
          if FileExists(ResNewName) then DeleteFile(PAnsiChar(ResNewName));
          Res.SavetoFile(ResNewName);
          Result:=0; // 获取资源成功
        except
          Result:=2; // 无法写入文件
        end;
        Res.Free;
      except
        Result:=3; // 无法获取资源
      end;
    end
    else Result:=1; // 目录不存在,而且又无法创建
  end
  else Result:=4; // 目标文件名错误
end;

⌨️ 快捷键说明

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