首页 > 其他分享 >Delphi 生成随机验证码

Delphi 生成随机验证码

时间:2024-06-19 15:01:34浏览次数:23  
标签:begin Canvas strResult Delphi Random 验证码 随机 arrStr vPoint

Delphi 生成随机验证码

function CodeImg(img: Timage): string;  
var  
  I,j,k:   Integer;  
  vPoint:   TPoint;  
  vLeft:   Integer;  
  arrStr:array [1..36]of string ;  
  strResult: string;  
begin  
  strResult := '';  
  arrStr[1] := '0';  arrStr[2]:='1';  arrStr[3]:='2';  arrStr[4]:='3';  
  arrStr[5] := '4';  arrStr[6]:='5';  arrStr[7]:='6';  arrStr[8]:='7';  
  arrStr[9] := '8';  arrStr[10]:='9'; arrStr[11]:='A'; arrStr[12]:='B';  
  arrStr[13] := 'C'; arrStr[14]:='D'; arrStr[15]:='E'; arrStr[16]:='F';  
  arrStr[17] := 'G'; arrStr[18]:='H'; arrStr[19]:='I'; arrStr[20]:='J';  
  arrStr[21] := 'K'; arrStr[22]:='L'; arrStr[23]:='M'; arrStr[24]:='N';  
  arrStr[25] := 'O'; arrStr[26]:='P'; arrStr[27]:='Q'; arrStr[28]:='R';  
  arrStr[29] := 'S'; arrStr[30]:='T'; arrStr[31]:='U'; arrStr[32]:='V';  
  arrStr[33] := 'W'; arrStr[34]:='X'; arrStr[35]:='Y'; arrStr[36]:='Z';  
  For j:=1 to 4  do  
  begin  
    Randomize;  
    k := strtoint(Format('%.1d',[Random(36)]));  
    strResult := strResult + trim(arrStr[k])  
  end;  
  vLeft := 10;  
  img.picture := nil;  
  for I := 1 to Length(strResult) do  
  begin  
    with Img do  
    begin  
      Canvas.Font.Size := Random(10)+ 9;  
      Canvas.Font.Color := RGB(Random(256) and $C0,  
      Random(256) and $C0, Random(256) and $C0);  
      if Random(2)=1 then  
        Canvas.Font.Style := [fsBold]  
      else Canvas.Font.Style := [];  
      begin  
        Canvas.Font.Name := Screen.Fonts[10];  
        vPoint.X := Random(4)+ vLeft;  
        vPoint.Y := Random(5);  
        Canvas.TextOut(vPoint.X, vPoint.Y,strResult[I]);  
        vLeft := vPoint.X + Canvas.TextWidth(strResult[I]);  
      end;  
    end;  
  end;  
end;

标签:begin,Canvas,strResult,Delphi,Random,验证码,随机,arrStr,vPoint
From: https://blog.csdn.net/lqzmax/article/details/139803328

相关文章

  • delphi:利用定时器读取串口返回数据
    定时器20毫秒运行一次,单字符读取,如果读取到就保存到全局变量receData中,否则就输出到文本框中,并重置receData。优点:单字符读取,解决了按长度读取的弊端,如果按长度读取,很多时候并不知道究竟要读取多长,有的时候能读取完整,有的时候只读取了部分。procedureTfrmLC.tmrReceDataTimer(S......
  • driftingblues9 - 溢出ASLR(内存地址随机化机制)
    SiteUnreachabledriftingblues9easyaPphpGETSHELL、searchsploit使用、凭据收集、gdb使用、缓冲区溢出漏洞(难)、pattern_create.rb、pattern_offset.rb使用主机发现┌──(kali㉿kali)-[~/桌面/OSCP]└─$sudonetdiscover-ieth0-r192.168.44.139/24服务探测......
  • 网易易盾中文点选验证码识别方法
    中文验证码一直是识别的难题,首先他分类的种类很多,常见中文都有3500个,而且一般中文验证码都会有变形,导致每一个文字都需要大量训练样本。假设每一个汉字样本需要100个,100×3500=35万个样本,所以标记的样本数量巨大,训练周期长,成本高。而且通常需要点选的文字数量很多,需要同时全......
  • 随机梯度下降(SGD)
    随机梯度下降(SGD)随机梯度下降(StochasticGradientDescent,SGD)是一种用于优化机器学习模型的基本算法。SGD通过迭代地调整模型参数,使损失函数达到最小,从而优化模型性能。它是深度学习中最常用的优化算法之一,尤其适用于大规模数据集和高维度参数空间。SGD的基本思想SGD的核心......
  • 李沐:用随机梯度下降来优化人生!
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」今天我们来聊聊达叔6大核心算法之——优化算法。吴恩达:机器学习的六个核心算法!梯度下降优化算法是机器学习和深度学习中最常用的优化算法之一。它通过不断调整模型......
  • 小白next项目初步上手搭建一个随机社会信用代码生成及验证功能网站
    先看看效果网址是:https://xinyongdaima.aitoolpro.work/#主要实现功能实现随机社会信用代码生成及验证;无数据存储功能;技术栈next.jstailwind工具sublimeChatGPT4o步骤准备工作:需要电脑安装node生成项目打开终端并运行以下命令:npxcreate-next-app@late......
  • 随机波动率下的衍生品定价(一)
    随机波动率下的衍生品定价(一)文章目录1价格-波动率方程1.1历史波动率—>价格1.2价格—>隐含波动率2高维情形考虑到期日为TTT的欧式期权,记其......
  • 同盾中文点选验证码识别方法
    中文验证码一直是识别的难题,首先他分类的种类很多,常见中文都有3500个,而且一般中文验证码都会有变形,导致每一个文字都需要大量训练样本。假设每一个汉字样本需要100个,100×3500=35万个样本,所以标记的样本数量巨大,训练周期长,成本高。而且通常需要点选的文字数量很多,需要同时全......
  • 【自动驾驶】随机缩进2D框的一条边
    这里主要对于方法进行总结,如果没什么思路的朋友可以看看,有更好思路与方法的朋友可以交流一下,看看是否能做一些优化。1.背景有些时候我们不一定是对检测结果直接用,有可能是根据点包一个框,也有可能会将检测的框进行放大或者缩小,以提高系统的鲁棒性或者说降低或提高敏感度。这个......
  • 最简单的随机过程——马尔科夫链的Python分析
    马尔科夫链是一种用于描述系统从一个状态转移到另一个状态的随机过程。它得名于俄罗斯数学家安德雷·马尔科夫,他在20世纪初提出了这种数学模型。马尔科夫链的一个关键特性是无记忆性,即未来状态的概率只依赖于当前状态,而不依赖于过去的状态。这种性质使得马尔科夫链在许多领域中具......