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

📄 u_function.~pas

📁 AirtoFly.com中的长途有关信息抓取,并存写在数据库中
💻 ~PAS
字号:
unit u_Function;

interface

uses
  ADODB, SysUtils, Registry, Windows, Classes, IniFiles;

function ExecSql(sSql : String ; var qry : TADOQuery) : Boolean;
function OpenSql(sSql : String ; var qry : TADOQuery) : Boolean;
function WriteLog(sContent : String) : Boolean;
procedure AutoStart(keyname, keyvalue : String);
function ConnectDB: Boolean;
procedure ReadIni();
procedure WriteIni();      
function SplitString(const Source,ch : WideString) : TStringList;

var
  dIP : String;
  dUser : String;
  dpwd : String;
  dDB : String;

implementation

uses
  uMain;

function SplitString(const Source,ch : Widestring) : TStringList;
var
  temp : WideString;
  i : Integer;
begin
  Result := TStringList.Create;
  if Source = '' then exit;
  temp := Source;
  i := pos(ch, Source);
  while i <> 0 do
  begin
    Result.add(copy(temp, 0, i-1));
    Delete(temp, 1, i);
    i:=pos(ch, temp);
  end;
  Result.add(temp);
end;

procedure ReadIni;
var
  ini : TIniFile;
begin
  try
    ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'setting.ini');
    dIP := ini.ReadString('database', 'IP', '');
    dUser := ini.ReadString('database', 'user', '');
    dpwd := ini.ReadString('database', 'password', '');
    dDB := ini.ReadString('database', 'database', '');
    ini.Free;
  except

  end;
end;

procedure WriteIni;
var
  ini : TIniFile;
begin
  try
    ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'setting.ini');
    ini.WriteString('database', 'IP', dIP);
    ini.WriteString('database', 'user', dUser);
    ini.WriteString('database', 'password', dpwd);
    ini.WriteString('database', 'database', dDB);  
    ini.Free;
  except

  end;
end;

function ConnectDB: Boolean;
var
  sCon : String;
begin
  Result := False;
  sCon := 'Provider=SQLOLEDB.1;Password=' + dpwd
      + ';Persist Security Info=True;User ID=' + dUser
      + ';Initial Catalog=' + dDB + ';Data Source=' + dIP;
  with frmMain.adoMain do
  begin
    if Connected then Close;
    ConnectionString := sCon;
    try
      Open;
    except
      WriteLog('数据库连接错误');
    end;
  end;
end;

function ExecSql(sSql: String; var qry: TADOQuery): Boolean;
begin
  Result := False;
  try
    if not frmMain.adoMain.Connected then ConnectDB();
    if qry.Active then qry.Close;
    qry.SQL.Text := sSql;
    qry.ExecSQL;
    Result := True;
  except
    WriteLog(sSql);
    ConnectDB();
  end;
end;

function OpenSql(sSql: String; var qry: TADOQuery): Boolean;
begin
  Result := False;
  try     
    if not frmMain.adoMain.Connected then ConnectDB();
    if qry.Active then qry.Close;
    qry.SQL.Text := sSql;
    qry.Open;
    if qry.RecordCount = 0 then exit;
    Result := True;
  except
    WriteLog(sSql);
    ConnectDB();
  end;
end;

function WriteLog(sContent: String): Boolean;
var
  sText : Textfile;
  sName : String;
begin
  Result := False;
  sName := ExtractFilePath(ParamStr(0)) + 'log.txt';
  try
    AssignFile(sText, sName);
    try
      Append(sText);
    except
      Rewrite(sText);
    end;
    Writeln(sText, datetimetostr(Now()));
    Writeln(sText, sContent);
    CloseFile(sText);
    Result := True;
  except
    Exit;
  end;
end;

procedure AutoStart(keyname, keyvalue : String);
var                        
  Reg : TRegistry;
begin
  try
    Reg := TRegistry.Create;                                      //创建一个新键
    Reg.RootKey := HKEY_LOCAL_MACHINE;                            //将根键设置为HKEY_LOCAL_MACHINE
    Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true);  //打开一个键
    if Reg.ReadString(keyname) <> keyvalue then
      Reg.WriteString(keyname, keyvalue);                          //在Reg这个键中写入数据名称和数据数值
  finally
    Reg.CloseKey;
  end;
end;

end.

⌨️ 快捷键说明

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