الفريق العربي للهندسة العكسية
[تعديل] الدالة العشوائية لتوليد الارقام والحروف (بدورة AT4RE لتعليم Keygening) - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بلغة باسكال و الدلفي - Pascal & Delphi (https://www.at4re.net/f/forum-18.html)
+--- الموضوع : [تعديل] الدالة العشوائية لتوليد الارقام والحروف (بدورة AT4RE لتعليم Keygening) (/thread-3377.html)



[تعديل] الدالة العشوائية لتوليد الارقام والحروف (بدورة AT4RE لتعليم Keygening) - TeRcO - 06-11-2022

السلام عليكم ورحمة الله وبركاته


لفت انتباهي (بدورة AT4RE لتعليم Keygening)
في دالتي توليد الارقام والحروف العشوائية
 ان النتيجة دائمة متشابهة
RandomNum = 3404-2631-0082
RandomStr =JLCM-HRIE-AAWF

 
function RandomStr: String;
var
A, K: String;
i : Integer;
begin
//randomize; <<== Add HERE
  K:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  A:='xxxx';
  for i:=1 to length(A) do
    A[i]:=K[Random(length(k))+1];
  Result := A;
end;


function RandomNum : String;
var
A, K: String;
i: Integer;
begin
//randomize; <<== Add HERE
  K:='0123456789';
  A:='xxxx';
  for i:=1 to length(A) do
    A[i]:=K[Random(length(k))+1];
  Result := A;
end;


وهو مايخالف تسميتها (Random-عشوائية)
وحلها بسيط ..... للحصول على نتيجة عشوائية نقوم باضافة السطر
randomize;
 
وشكرا لأساتذتنا الكرام لاثرائنا بكل ماقدموه من دروس و معرفة rose

دمتم بود victory


RE: [تعديل] الدالة العشوائية لتوليد الارقام والحروف (بدورة AT4RE لتعليم Keygening) - karakoro - 29-09-2025

شكرا لك على المعلومة
وهذا كود بطريقة اخرى لتوليد 5 ارقام عشوائية
 
procedure TForm1.Button1Click(Sender: TObject);
var
  SourceArr: array[0..8] of Integer; // المصفوفة (9 أرقام)
  StartIndex, i: Integer;
  s: string;
begin
  Randomize;

  // تعبئة المصفوفة من 1 إلى 9
  for i := 0 to 8 do
    SourceArr[i] := i + 1;

  // اختيار بداية عشوائية بحيث لا تتجاوز (9 - 5 = 4)
  StartIndex := Random(9 - 5 + 1);  // يعطي 0..4

  s := '';
  for i := StartIndex to StartIndex + 4 do
    s := s + IntToStr(SourceArr[i]); // بدون مسافة

  Edit1.Text := s;
end;