Delphi 开发快捷功能

1、记录日志

procedure WriteLog;

  var
  txt: TextFile;

begin
      var strFileDir := ExtractFilePath(ParamStr(0)) + 'DataRecord';//文件夹路径
      if not DirectoryExists(strFileDir) then//判断是否存在文件夹
        ForceDirectories(strFileDir);//没有就创建

      strFileDir := strFileDir + '\' + FormatDateTime('yyyy-mm-dd', Now);

      if not DirectoryExists(strFileDir) then
        ForceDirectories(strFileDir);
      var strPath := strFileDir + '\' + FormatDateTime('HH', Now) + '.csv';//按照时间设置文件min

      if not FileExists(strPath) then
      begin
        Assignfile(txt, strPath);  //指定文件路径
        rewrite(txt);
        Writeln(txt, 内容);
      end
      else
      begin
        AssignFile(txt, strPath);
        Append(txt);      //以追加的方式打开文件,指针到尾
      end;
        Writeln(txt, 内容);

       CloseFile(txt) ;//关闭文件

end;

2、批量寻找某类型文件(递归)

procedure Bulk(Filename: string);
var
  search: TSearchRec;
  aClass: Variant;
  ret: Integer;
  key: string;
  strFile, strname: string;
begin
  try
    Filename := Filename + '\';
    key := Filename + '*.*';  //下级目录未找到递归找直到找到为止
    ret := FindFirst(key, faAnyFile, search);
    try
    while ret = 0 do
    begin
      if ((Pos('.bin', LowerCase(search.name))) > 0)  then //文件后缀名字
      begin
       listFile.add(FilePath);//添加文件夹名字
      end;
      if Pos('.', search.Name) = 0 then
        Bulk(Filename + search.name);
      ret := FindNext(search);
    end;
    finally
       FindClose(search);
    end;
  except
    on E: Exception do
    begin
      Exit;
    end;
  end;
end;

3、邮件服务

exe程序根目录下需要引入ssleay32.dll、libeay32.dll

procedure  SendEmail(const ASmtpHost, AUsername, APassword, AFrom, ATo, ASubject: string; ABody: Tstrings);
var
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  ssl: TIdSSLIOHandlerSocketOpenSSL;
  Attachment: TIdAttachmentFile;
  Attachmentpart: TIdAttachment;
  stype: string;
begin
  IdSMTP := TIdSMTP.Create(nil);
  IdMessage := TIdMessage.Create(nil);

  try
    ssl := TIdSSLIOHandlerSocketOpenSSL.create(nil);
    IdSMTP.IOHandler := ssl;
    IdSMTP.Host := ASmtpHost;
    IdSMTP.Port := 465; //SMTP端口号
    IdSMTP.Username := AUsername;//用户名
    IdSMTP.Password := APassword;//密码
    IdSMTP.UseTLS := utUseExplicitTLS;
    ssl.SSLOptions.Method := sslvTLSv1;
    ssl.SSLOptions.Mode := sslmUnassigned;
    IdMessage.From.Address := AFrom;//发送地址
    IdMessage.Recipients.Add.Address := ATo;接收地址
    IdMessage.Subject := ASubject;
    try
      if SaveFile.Count<>0 then
      begin
        for var s := 0 to SaveFile.Count-1 do
        begin
           Attachment := TIdAttachmentFile.Create(IdMessage.MessageParts,SaveFile.Strings[s] );
           Attachment.CharSet := 'base64';
           stype := ReverseString(Copy(ReverseString(SaveFile.Strings[s]),0
                    ,Pos('.',ReverseString(SaveFile.Strings[s]))-1));
           if stype='txt' then
             Attachment.ContentType := 'text/plain'
           else
           if stype='jpg' then
             Attachment.ContentType := 'application/x-jpg'
           else
           if (stype='xlsx') or (stype='xls') then
           Attachment.ContentType :=  'application/x-xls';//添加文件类型
        end;
      end;
      with TIdText.Create(IdMessage.MessageParts, nil) do
      begin
        Body.Add('<html><body>');//添加html样式
        ContentType := 'text/html; charset=utf-8';
        Body.Add('<html><body>');
        for var i := 0 to ABody.Count - 1 do
        begin
          Body.Add('<p>' + ABody.Strings[i] + '</p>');
        end;
         Body.Add('<br><br>');
        for var j := 0 to rzmStyle.Lines.Count - 1 do
        begin
          if (j=1) or (j=3) or (j=4) or (j=5) or (j=6)or (j=7) or (j=8)then
            Body.Add('<p><font size="10" color="blue">' + rzmStyle.Lines.Strings[j] + '</font></p>')
          else
          if(j=10)then
          begin
            Body.Add('<p><b>' + rzmStyle.Lines.Strings[j] + '</b></p>');
          end
          else
          begin
            Body.Add('<p>' + rzmStyle.Lines.Strings[j] + '</p>');
          end;
        end;
        Body.Add('</body></html>);

   end;
      IdMessage.ContentType := 'multipart/mixed';
      IdMessage.CharSet := 'gb2312';
      IdSMTP.Connect;
      try
        IdSMTP.Authenticate;
        IdSMTP.Send(IdMessage);
        ShowMessage('Send Success!');
      finally
        IdSMTP.Disconnect;
      end;
    except
      on e: Exception do
      begin
        ShowMessage('Send Fail!Resion:' + e.message);
      end;
    end;

  finally
    IdMessage.Free;
    IdSMTP.Free;

  end;
end;

4、如何调用Dos命令

引用单元 ShellApi

拿7Z.dll举例,做文件解压

procedure TZipForm.btn2Click(Sender: TObject);
var
 fileSingle,fileAll,FIleOut: string;
 params: string;
begin
  list.Clear;
  fileSingle := '输入文件路径';

  fileOut :=‘输出文件路径’;
  if (trim(fileSingle)='') and (trim(fileAll)='') then exit;
  if (trim(fileSingle)<>'') then
  begin
    params := 'x ' + trim(fileSingle) + ' -o'  + fileOut;
    ShellExecute(0, 'open', PWideChar(ExtractFilePath(ParamStr(0))+'7z.exe'),PWideChar(params), nil, 0);
  end;
end;

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值