delphi4arab منتديات دلفي للعرب
DM Serial Number Demo - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14)
+--- الموضوع : DM Serial Number Demo (/showthread.php?tid=10416)



DM Serial Number Demo - Delphi4Us - 29-08-2019

[صورة: attachment.php?aid=4109]



.zip   DM_Serial_11014292016.zip (الحجم : 3.59 ك ب / التحميلات : 121)


RE: DM Serial Number Demo - أبو معاذ - 29-08-2019

السلام عليكم .

جميل جدا بارك الله فيك ،

كنت أبحث منذ مدة عن كيفية انشاء الرقم التسلسلي بالشكل :

XXXX-XXXX-XXXX-XXXX


جزاك الله خيرا.


PHP كود :
unit Main;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 
= class(TForm)
    txtName: TLabeledEdit;
    txtKey: TLabeledEdit;
    cmdRegister: TButton;
    procedure cmdRegisterClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function 
GetSerial(Username : string) : string;
var
  CH: Byte;
  S1,S2,Hash : string;
  I,J,A,B : Integer;
  const sTable = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
begin

  Hash 
:= '';
  S1 := '';
  A := 1;
  B := Length(Username);

  If B = 0 then Exit;

  //Resize user name to 24 bytes
  For I := 1 to 24 do
  begin
    
If A > B Then A := 1;
    //Use this to jumple of orginal char values
    J := (I * byte(Username[A]) XOR 45) AND 255;
    //Build new username
    S1 := S1 + Chr(J);
    //INC Counter
    INC(A);
  end;

  //Make serial string of username.
  For I := 1 to Length(S1) do
  begin
    CH 
:= Byte(S1[I]);
    A := (CH MOD 36);
    If A = 0 then A := 1;
    //Build serial
    hash := hash + sTable[A];
  end;

  For I := 1 to Length(hash) do
  begin
    B 
:= I - 1;
    If (B MOD 4) = 0 then
    begin
      
//Add seperator.
      S2 := S2 + '-';
    end;
    //Build hash
    S2 := S2 + hash[I];
  end;
  //Delete first seperator.
  Delete(s2,1,1);
  //Return hash.
  GetSerial := S2;
end;

function 
IsSerialVaild(Username,sSerial : string) : Boolean;
begin
  
//Test if number is vaild.
  if Length(Trim(Username)) = 0 then exit;
  IsSerialVaild := GetSerial(Username) = sSerial;
end;
procedure TForm1.cmdRegisterClick(Sender: TObject);
var 
sKey : string;
begin
  sKey 
:= GetSerial(txtName.Text);
  txtkey.Text := sKey;
end;

end. 



RE: DM Serial Number Demo - Delphi4Us - 29-08-2019

وعليكم السلام اخ ابومعاذ

الحمد لله ان الموضوع افادك .
وجزاك الله كل خير ايضا .


RE: DM Serial Number Demo - أبو معاذ - 29-08-2019

السلام عليكم.
أخي الحبيب صندوق الرسائل لديك ممتلئ.