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

📄 unit1.~pas

📁 用于产生随机数
💻 ~PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, ExtCtrls, DBCtrls, Menus,
  comobj;
type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOConnection1: TADOConnection;
    at_Random: TADOTable;
    Button1: TButton;
    DBNavigator1: TDBNavigator;
    Button2: TButton;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    at_pw: TADOTable;
    ADOQuery2: TADOQuery;
    at_mnumtemp: TADOTable;
    ADOQuery3: TADOQuery;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    Button3: TButton;
    Button4: TButton;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
    i,j,k,m:Longint; //循环变量
    x_value1,x_value2:Longint;//随机数
    x_count,x_bit,x_bitn:Longint; //个数
    x_random,x_randomn,s1,s2:string;//范围
    t1,t2:integer;
begin
    x_random := '';
    x_randomn := '';
    if edit1.Text = '' then
      begin
        ShowMessage('卡号是多少位');
        exit;
      end;
    if edit2.Text = '' then
      begin
        ShowMessage('没有个数');
        exit;
      end;
    if edit3.Text = '' then
      begin
        ShowMessage('密码是多少位');
        exit;
      end;
    Randomize;
    //
    x_bit := StrToInt(edit3.Text);// 密码位数
    x_bitn := StrToInt(edit1.Text);// 卡号位数


    x_count:=StrToInt(edit2.Text);//个数
    if at_pw.Active = false then
      at_pw.Active := true;
    if at_Random.Active = false then
      at_random.Active := true;

    at_Random.First;
    at_pw.First;
    i:=0;
    with at_mnumtemp do begin
      Active := true;
      DisableControls;
    end;

    while i<x_count do
      begin
        s1:='';
        for k:= 1 to x_bitn do begin
          s1:=s1+ inttostr(random(9));
        end;
        s1:=edit4.Text + s1;
        try
        at_Random.Append;
        at_Random.FieldByName('Num').AsString:= s1;
        at_Random.Post;
          while true do begin
             s2:='';
             t1:=random(x_bit);
             t2:=t1;
             while t1=t2 do begin
               t2:=random(x_bit);
             end;
             for m:=0 to x_bit-1 do begin
{               if (m=t1) or (m=t2) then begin
                 s2:=s2+chr(byte((random(26)+65)));
                 Continue;
               end;
}
                 s2:=s2+inttostr(random(9));
             end;

             if (trim(s2[1])<>trim(s2[2])) and
                (trim(s2[1])<>trim(s2[3])) and
                (trim(s2[1])<>trim(s2[4])) and
                (trim(s2[1])<>trim(s2[5])) and
                (trim(s2[1])<>trim(s2[6])) and
                (trim(s2[2])<>trim(s2[3])) and (trim(s2[2])<>trim(s2[4])) and (trim(s2[2])<>trim(s2[5])) and (trim(s2[2])<>trim(s2[6])) and
                (trim(s2[3])<>trim(s2[4])) and (trim(s2[3])<>trim(s2[5])) and (trim(s2[3])<>trim(s2[6])) and
                (trim(s2[4])<>trim(s2[5])) and (trim(s2[4])<>trim(s2[6])) and
                (trim(s2[5])<>trim(s2[6])) then begin end else Continue;
             try
               at_pw.Append;
               at_pw.FieldByName('mpassword').AsString:= s2;
               at_pw.Post;
               i:=i+1;

               at_mnumtemp.Append;
               at_mnumtemp.FieldByName('mnum').AsString:= s1;
               at_mnumtemp.FieldByName('mpassword').AsString:= s2;
               at_mnumtemp.Post;
               break;
             except
               at_pw.Cancel;
             end;
          end;
        except
          at_Random.Cancel;
        end;
      end;
    Label3.Caption:=IntToStr(at_mnumtemp.RecordCount);
    with at_mnumtemp do begin
      Active := false;
      Active := true;
      Refresh;
      EnableControls;
    end;

    ShowMessage('ok');

   //产生卡号
    {x_count:=StrToInt(edit1.Text);
    if at_Random.Active = false then
      at_random.Active := true;
    at_Random.First;
    for i:=1 to x_count do
      begin
        x_value1:=random(strtoint(x_random));
        at_Random.Append;
        at_Random.FieldByName('Num').AsInteger:= x_value1;
        at_Random.Post;
      end;
    Label3.Caption:=IntToStr(at_Random.RecordCount); }
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery3.ExecSQL;
at_mnumtemp.Active := false;
at_mnumtemp.Active := true;
//ADOQuery1.ExecSQL;
//ADOQuery2.ExecSQL;



end;

procedure TForm1.N1Click(Sender: TObject);
var
   ExcelApp:Variant;
   i,j:integer;
begin
  try
    ExcelApp := CreateOleObject('Excel.Application');
  except
    showmessage('你没装Excel,谢谢:)');
    exit;
  end;
  ExcelApp.Visible :=true;
  ExcelApp.WorkBooks.Add;
  at_mnumtemp.First;
  i:=0;
  while not at_mnumtemp.Eof do  //全都导出
     begin
       i:=i+1;
       for j:=0 to at_mnumtemp.FieldCount-1 do
         ExcelApp.Cells[i,j+1].Value :=at_mnumtemp.Fields[j].Value;
       at_mnumtemp.Next;
     end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  x1,x2,x3:integer;
  s1:string;
  i,j:integer;
  
begin


  {s1:='';
  j:=0;
  Randomize;
  x1:=strtoint(Edit1.Text);//卡号位数,循环次数
  x2:=strtoint(Edit2.Text);//个数
  while j<x2 do begin
    s1:='';
    for i:= 1 to x1 do begin
      s1:=s1+ inttostr(random(9));
    end;

    with at_mnumtemp do begin
      try
        Append;
        FieldByName('mnum').AsString := s1;
        post;
        j:=j+1;
      except
        Cancel;
      end;
    end;

  end;

  Label3.Caption := inttostr(at_mnumtemp.RecordCount);
  ShowMessage('ok'); }



end;

procedure TForm1.Button4Click(Sender: TObject);
var
  x1,x2:integer;
  t1,t2:integer;
  i,j:integer;
  s1:string;

begin
  Randomize;
  s1:='';
  j:=0;
  x1:= strtoint(Edit3.Text);//密码位数
  x2:= strtoint(Edit2.Text);//个数
  while j<x2 do begin
    s1:='';
    t1:=random(x1);
    t2:=t1;
    while t1=t2 do begin
      t2:=random(x1);
    end;
    for i:=0 to x1-1 do begin
      if (i=t1) or (i=t2) then begin
         s1:=s1+chr(byte((random(26)+65)));
         Continue;
      end;
      s1:=s1+inttostr(random(9));
    end;

    with at_mnumtemp do begin
      try
        Append;
        FieldByName('mnum').AsString := s1;
        post;
        j:=j+1;
      except
        Cancel;
      end;
    end;
  end;

  Label3.Caption := inttostr(at_mnumtemp.RecordCount);
  ShowMessage('ok');


  

  //ShowMessage(chr(t1));
end;

end.

⌨️ 快捷键说明

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