الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال دون جواب

بدأه 007GB في 25 يونيو 2008 · 43 رد · 4,334 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#26
007GB كتب:
هنالك طريقة عامة تحسب من خلالها النسبة المئوية لأي مقدار من أي مقدار

function CalculatePrecentage (FatherNum,SonNum:extended):extended;
begin
result:=(SonNum*100)/FatherNum
end;

و لكن ذلك لا يعني أنها الوحيدة فكما ذكرت هي طريقة عامة و تلاحظون أنها ثقيلة نوعاً ما على المعالج لأنها تقوم بعمليات حسابية على أعداد ضخمة و كبيرة من حيث نوع المتغيير

هي الطريقة المثالية على ما أظن, فليس المعالج من يقوم بحلها بل وحدة الحساب FPU.

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#27

من وجهة نظري

أقدم الحل الذي أوجدته

لا نرى الأخوة الخبراء و أفكارهم سواءً أسئلة أو أجوبة نرجو أن يكونو يحضرون ما هو ذو قيمة :cash:

فكل تأخيرة و فيها خيرة

procedure TForm1.Button1Click(Sender: TObject);

var num:real;

begin

num := strtofloat(edit2.text)/strtofloat(edit1.text) ;

edit3.Text := floattostr(strtofloat(formatfloat('0.####',num))*100) ;

end;

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#28

سؤال جديد :

لديك التابع التالي :

y=x^2

أو

ع=س^2

كيف ترسم المنحني البياني الممثل لهذا التابع ضمن PaintBox

علماً أن x,y من النوع integer

أو

س،ع أعداد صحيحة

المستبد يتحكم في شؤون الناس بإرادته لا بإرادتهم و يحكمهم بهواه لا بشريعتهم و يعلم من نفسه أنه الغاصب المتعدي فيضع كعب رجله على أفواه الملايين من الناس يسدها عن النطق بالحق و التداعي لمطالبته

#29

ربنا يعينكم بس انا حاسس انة واجب ومطلوب حلة :hmm:

ربنا يساعدكم

Comming Soon

#30

يبدو أن الموضوع فتر و أن لا أحد يعيره اهتماماً

على كل حال هذا جواب السؤال الأخير

procedure TForm1.Button1Click(Sender: TObject);
 var Wdt,Hgt,X,Y:integer;
 begin
  PaintBox1.Repaint;
  Wdt:=PaintBox1.width div 2;
  Hgt:=PaintBox1.Height div 2;
  PaintBox1.Canvas.MoveTo(Wdt,0);
  PaintBox1.Canvas.LineTo(Wdt,Hgt*2);
  PaintBox1.Canvas.MoveTo(0,Hgt);
  PaintBox1.Canvas.LineTo(Wdt*2,Hgt);
  x:=0;Y:=0;
  for X:=-wdt to Wdt do 
   begin
	Y:=X*X;   
	if X=-Wdt then 
	 PaintBox1.Canvas.MoveTo(0,Hgt-Y)
	else
	 begin
	  PaintBox1.Canvas.Pen.Color:=ClRed;  
	  PaintBox1.Canvas.LineTo(Wdt+X,Hgt-Y);
	 end;
   end;
 end;

و إن شاء الله نرى أسئلة من مبرمجين أخرين

المستبد يتحكم في شؤون الناس بإرادته لا بإرادتهم و يحكمهم بهواه لا بشريعتهم و يعلم من نفسه أنه الغاصب المتعدي فيضع كعب رجله على أفواه الملايين من الناس يسدها عن النطق بالحق و التداعي لمطالبته

#31

سنحاول اليوم إنعاش الموضوع

السؤال هو :

كيف تقوم بتأخير تنفيذ كود لفترة زمنية محددة

هيا إطرحوا إجاباتكم و لاتخجلوا

المستبد يتحكم في شؤون الناس بإرادته لا بإرادتهم و يحكمهم بهواه لا بشريعتهم و يعلم من نفسه أنه الغاصب المتعدي فيضع كعب رجله على أفواه الملايين من الناس يسدها عن النطق بالحق و التداعي لمطالبته

#32

السلام عليكم

أخي الكريم تريد تأخير التنفيذ( لمدة معينة) =وقت أم = أمر معين ؟؟؟

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#33

For I := 1 to 200 do

..

..

تم تعديل هذه المشاركة بواسطة نجم في 16 يوليو 2008 في 20:53

#34

السلام عليكم

اقترح استخدام Timer .

بحيث نصف الكود الأول يكون على الزر و من ثم نفعل Timer (من خلال الزر)

و يكون النصف الثاني على التايمر.

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

و السلام

تم تعديل هذه المشاركة بواسطة asrocks في 16 يوليو 2008 في 21:21

#35
نجم كتب:

For I := 1 to 200 do

..

..

أخي الكريم لاحظ أن الأمر سينفذ 200 مرة و لن يتم تأخيره فهو سينفذ مع أول قيمة لـ I

أنا مع الطريقة التي قدمها الأخ asrocks

asrocks كتب:
السلام عليكم

اقترح استخدام Timer .

بحيث نصف الكود الأول يكون على الزر و من ثم نفعل Timer (من خلال الزر)

و يكون النصف الثاني على التايمر.

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

و السلام

طريقة ثانية هي أستخدام الأمر (sleep)

(sleep(100

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#36

هنالك طريقة أخرى لا تحتاج إلى الأمر sleep فالسيئة الرئيسية لهذا الأمر أنه يوقف عمل البرنامج كلياً للمدة التي تدخلها أما الكود الذي سأدخله فهو يأخر التنفيذ فقط دون أن يؤثر على عمل البرنامج

procedure Delay(DelayTime:TTime);
 var StartTime,CrtTime:TTime;
 begin
  StartTime:=Time;
  while CrtTime < DelayTime do
   begin
	CrtTime:=Time-StartTime;
	Application.ProcessMessages;
   end;
 end;

مثال

procedure TForm1.Button1Click(Sender:TObject);
begin
showmessage('Wait 5 seconds');
delay(encodeTime(0,0,5,0));
showmessage('You Have Waited for 5 seconds')
end;

تم تعديل هذه المشاركة بواسطة 007GB في 18 يوليو 2008 في 16:23

المستبد يتحكم في شؤون الناس بإرادته لا بإرادتهم و يحكمهم بهواه لا بشريعتهم و يعلم من نفسه أنه الغاصب المتعدي فيضع كعب رجله على أفواه الملايين من الناس يسدها عن النطق بالحق و التداعي لمطالبته

#37

ممكن تنفيذ الكود كثريد منفصل عن طريق الدالة CreateThread ثم استخدام الدالة WaitForSingleObject حيث المقبض هو للثريد الذي تم انشاؤه مع تحديد الوقت المناسب .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#38

منتدى طويل عريض و لا يوجد مبرمج لديه أفكار يطرحها على الآخرين على شكل سؤال و جواب

لقد ذكرت عدة مرات أن الطرح ليس لي وحدي بل هو للمبرمجين جميعاً

أم أن المنتدى قد أقفر من المبرمجين و أقتصر الأمر على الزوار

مادفعني لي هذا الإنتقاد الحاد هو التفاعل مع السؤال الأول التفرقة بين العدد الزوجي و الفردي و خبوت التفاعل بعد ذلك و بشكل كبير جداً^n

مع العمل أن n تسعى إلى + الانهاية

تم تعديل هذه المشاركة بواسطة 007GB في 19 يوليو 2008 في 18:48

المستبد يتحكم في شؤون الناس بإرادته لا بإرادتهم و يحكمهم بهواه لا بشريعتهم و يعلم من نفسه أنه الغاصب المتعدي فيضع كعب رجله على أفواه الملايين من الناس يسدها عن النطق بالحق و التداعي لمطالبته

#39

007GB

كتابة كل سؤال بموضوع منفصل وباختيار عنوان مناسب احسن

انظر لهذا الموضوع: 4 صفحات حتى الان، كيف للمتصفح ان يعرف ماهي الاسئلة وماهي الاجابات دون ان يتصفح كل الصفحات!

-

حول اخر سؤال:

يمكن استخدام Timer وبه عداد، وعندما يثل العدداد عدد معين يكمل البرنامج التنفيذ

-

وهذا سؤال يحتاج جواب:

كيف تجعل برنامج ينفذ ينفذ 10 مرات فقط ؟

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

d4baa0.gif
#40
B.M.AbdelAziZ كتب:

كيف تجعل برنامج ينفذ ينفذ 10 مرات فقط ؟

ممكن for

procedure TForm1.Button1Click(Sender: TObject);

var i:integer ;

begin

for i:= 1 to 10 do

showmessage('this is try num ' + inttostr(i)) ;

end;

كما أن while تقوم بنفس المهمة

procedure TForm1.Button1Click(Sender: TObject);

var i:integer ;

begin

i:= 1 ;

while i < 11 do

begin

showmessage ('this is try num ' + inttostr(i)) ;

i:=i+1 ;

end ;

end;

بالتأكيد يمكن التلاعب بشرط الـ while

تم تعديل هذه المشاركة بواسطة rober في 20 يوليو 2008 في 00:12

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#41

اعتقد انه يقصد بينفّذ ان "يعمل" ,, يعني لا تستطيع فتح البرنامج اكثر من عشر مرات ,, ويكون ذلك عن طريق كتابة قيمة للعداد في مكان آمن مثل الرجستري مثلا او ملف خارجي ,, طبعاً لن نتكلم هنا عن امكانية الكسر :lol:

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#42
B.M.AbdelAziZ كتب:

كيف تجعل برنامج ينفذ ينفذ 10 مرات فقط ؟

أخي الكريم GamingMasteR لاحظ كلمة ( ينفذ )

يمكن وجهة نظري خاطئة لكن هذا ما فهمته من كلمة ( ينفذ )

بالنسبة للكسر مافي غيرك لها :cash:

تم تعديل هذه المشاركة بواسطة rober في 20 يوليو 2008 في 00:22

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#43

ٌrober المقصود ان البرنامج يعمل 10 مرات فقط

d4baa0.gif
#44

السلام عليكم

شكرا أخي للتوضيح

أنا أستخدمت أحد الطرق التي أشار إليها الأخ GamingMasteR و هي وضع مفتاح في الريجستري

كما يمكن جعل البرنامج يعمل 10 أيام فقط

procedure TForm1.FormCreate(Sender: TObject);

var reg : tregistry ;

tim : integer ;

begin

reg := tregistry.Create ;

reg.RootKey := HKEY_CURRENT_USER ;

if not reg.OpenKey ('\Software\test',false) then

begin

reg.OpenKey('\Software\test',true) ;

reg.WriteString('time','0') ;

end ;

tim := strtoint(reg.ReadString('time')) ;

if tim = 10 then

begin

showmessage('time is up') ;

application.Terminate ;

end

else

reg.WriteString('time',inttostr(tim+1)) ;

end;

lock.zip

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

مواضيع مشابهة