المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : برمجة مولّد أرقام


adrar
22-04-2010, 01:05 PM
السلام عليكم إخواني

لدي مشكلة في برمجة مولّد أرقام بسيط
مثال: أنا أحتاج الى توليد 10 أرقام وبهذه الصيغة
0000000000
0000000001
0000000002
......................
......................
9999999999

بأخذ كل الإحتمالات الممكنة

أنا إستخدمت الدالة for
for a:= 0 to 9 do
for b:= 0 to 9 do
for c:= 0 to 9 do
for d:= 0 to 9 do
for e:= 0 to 9 do
for f:= 0 to 9 do
for g:= 0 to 9 do
for h:= 0 to 9 do
for i:= 0 to 9 do
for j:= 0 to 9 do
begin
Memo1.Text:= Memo1.Text + IntToStr(a)+ IntToStr(b)+ IntToStr(c)+ IntToStr(d) + IntToStr(e)+ IntToStr(f)+ IntToStr(g)+ IntToStr(h) +IntToStr(i)+ IntToStr(j);
Memo1.Lines.Add(#$D);
end;
Memo1.Lines.SaveToFile('C:\1.txt');

المشكلة:
بعد طلب توليد الأرقام الجهاز يحدث له بلوك أظن سبب عدد الأرقام الهائل

إذا كان هناك حل أفضل من هذا فأتمنى منكم طرحه أو ربما تقسيم العمل الأول (الدالة for )إلى أجزاء

وشكرا لكم مسبقاً.

musvc
22-04-2010, 06:23 PM
:laugh:
طبعا ً ليس من المرغوب ان تكرر شيئ في البرمجة اكثر من الازم

اليك الحل :

اضف مكونين من Edit
اضف زر

في حدث الزر :

var
Add: Integer;
I: Integer;
begin
Edit2.Clear;
Add := 10 - Length(Edit1.Text);
for I := 1 to Add do
Edit2.Text := Edit2.Text + '0';
Edit2.Text := Edit2.Text + Edit1.Text;

طبعا ً يوجد الكثير من الطرق لفعل ذلك برمجيا ً
يمكنك صنع دالة من الكود :

function Num10(Number: Integer): String;
var
Add: Integer;
I: Integer;
begin
Add := 10 - Length(IntToStr(Number));
for I := 1 to Add do
Result := Result + '0';
Result := Result + IntToStr(Number);
End;

كود الأستدعاء :
Edit2.Text := Num10(StrToInt(Edit1.Text));

و لا تنسى اضافة Try قبل استدعائه .

سلام

kachwahed
22-04-2010, 07:21 PM
وعليكم السلام ورحمة الله
فقط بالنسبة لعرض الأرقام بنمط معين، يمكن استخدام شيء مثل:
Edit2.Text := FormatFloat('0000000000', StrToFloat(Edit1.Text))

adrar
22-04-2010, 11:31 PM
شكراً لكم سأحاول تطبيق ما تفضلتم به
وبالتوفيق للجميع