المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
04-05-2008, 07:12 PM
(آخر تعديل لهذه المشاركة: 04-05-2008, 07:19 PM بواسطة merouane.)
أضف windows بعد Forms
كود :
uses
Forms, [color=Red]windows[/color],
هذا السطر مكرر احذف أحدهما
كود :
Application.CreateForm(TForm1, Form1);
لست بحاجة إلى هذا السطر
كود :
Application.CreateForm(TSplashscreen, Splashscreen);
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
professor DeXTeR كتب :جرب وضع هذه التعلميه
ما هذا !!! هده برمجة وليس حقل تجارب
bilgads كتب :يا أخي يجب عليك ان لا تدع فراغ بين sleep والقوس
يا اخي يمكن وصع فراغ او عشرة دلفي يهمل الفراغات والمسافات
يا جماعة من لا يعرف لا يجيب ويترك السؤال لغيره
صاحب السؤال يريد التعلم فلا تزيدوه اخطاء وتدخلوه في متاهات
delphi4arab كتب :![[صورة: 18N22836.png]](http://www.arb-up.com/files/arb-up-2008-1/18N22836.png)
Sleep معرفة في Windows
والخطأ بالصورة لانك نست كتابة Windows في Uses مباشرة تحت Forms
1000 تعني ثانية
لكي يظهر SlpashScreen ثلاث ثوان مثلا غيرها ب3000
المشاركات : 115
المواضيع 10
:
: 0
الإنتساب : Feb 2008
نعم يجب إضافة windows إلى uses لكي تعمل الوظيفة sleep.
من تشبه بقوم فهو منهم
المشاركات : 10
المواضيع 0
:
: 0
الإنتساب : Mar 2008
تعليمة sleep موجودة في المكتبتين SysUtils و Windows
لكن هل من فرق بينهما الاثنين من kernel32
المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
08-05-2008, 01:18 AM
(آخر تعديل لهذه المشاركة: 08-05-2008, 11:55 AM بواسطة merouane.)
السلام عليكم
snyper كتب :تعليمة sleep موجودة في المكتبتين SysUtils و Windows
لكن هل من فرق بينهما
طبعا يوجد فرق (لا شيء مكرر) .. واشكرك على دقة ملاحظتك
سأشرح بطريقتين : الاولى بديهية ، والثانية تجربة توضيحية
بيديهيا:
نفتح الوحدتين SysUtils و Windows (وذلك بـ CTRL + الضغط بالزر الأيسر للفأرة على كلمة SysUtils - نفس الشيء لـ Windows ) ثم نقرأ ما كتب من طرف الشركة على رأس الملفين.
كود :
SysUtils :
[align=center][COLOR=Blue]Delphi / Kylix Cross-Platform Runtime Library
System Utilities Unit [/COLOR]
Copyright (c) 1995-2002 Borland Softwrare Corporation [/align]
كود :
Windows :
[align=center][COLOR=Blue]Borland Delphi Run-time Library
Win32 API Interface Unit[/COLOR]
Copyright (c) 1985-1999, Microsoft Corporation
Translator: Borland Software Corporation[/align]
لاحظ اللون الأزرق، والمعنى
الأولى تتضمن إرجراءات خاصة بدلفي (هنا نستطيع الاستقلال عن ويندوز)، والثانية تتضمن إجراءات النظام أي API
لنلقي نظرة على المضمون
كود :
SysUtils :
[color=SeaGreen]{$IFDEF MSWINDOWS}[/color] [color=Blue]في حال كان البرنامج يعمل تحت نظام ويندوز[/color]
procedure Sleep; external kernel32 name 'Sleep'; stdcall; [color=Blue]هنا نستدعي إجراء النظام العادي[/color]
[color=SeaGreen]{$ENDIF} [COLOR=Blue]أو[/color]
{$IFDEF LINUX}[/COLOR] [color=Blue]في حال كان البرنامج يعمل تحت نظام لينكس[/color]
procedure Sleep(milliseconds: Cardinal);
begin
usleep(milliseconds * 1000); [color=Blue]// usleep is in microseconds[/color] [color=Blue]اما هنا خاص بالنظام لينكس[/color]
end;
[color=SeaGreen]{$ENDIF}[/color]
كود :
Windows :
procedure Sleep; external kernel32 name 'Sleep'; [color=Blue]استدعاء إجراء النظام ويندوز فقط[/color]
هذا بالطريقة البديهية عن طريق استكشاف VCL
الأن عن طريق التجريب ، وفي الحقيقة قد تنفع كدرس في استعمال الوحدات، لكن اكتفي بوضعها هنا كرد.
لا توجد مشكلة مع Sleep لأنها في الوحدتين تستعملا نفس الإجراء .. لكن هناك مثال سيرينا الفرق.
لنعمل مع الإجراء Beep ، وللعلم هناك إجرائين Beep و ( Beep (dwFreq, dwDuration
وفي الأغلب نحن نستعمل الأولى.. لماذا ؟؟ لأنه
كود :
uses
Windows, [color=Blue]سبقت[/color]
SysUtils, [color=Blue]تلغي الأولى[/color]
الأن جرب و أكتب (مع العلم أن Windows API يذكر لنا أن Beep تأخذ متغيرين كما - ( Beep (dwFreq, dwDuration -)
كود :
uses
Windows,
SysUtils,
وضع الإجراء التالي عند الضغط على زر
كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
Beep(400,100);
end;
ستفاجأ بخطا في التجميع Compilation وذلك بسبب أن الوحدة المذكورة أولا ستطغى عليها (أو تلغيها) الوحدة التالية ، الأن جرب
كود :
uses
SysUtils,Windows, . . . .
. . . . . . . . . .
procedure TForm1.Button1Click(Sender: TObject);
begin
Beep(400,100);
end;
الآن كل شيء يعمل . هنا أشعر انه قد يختلط الامر على البعض سأوضح
( Beep (400, 100 تابعة للوحدة windows وهذه الوحدة مذكورة بعد SysUtils أي تلغيها
ومنه دلفي سيستعمل الإجراء الخاص بالوندوز ولن يأخذ بعين الاعتبار نظام التشغيل.
هذا مثال فقط ، و لكن لو كان لدينا إجراءات متداخلة بحيث لا نضمن انها لن تلغى من وحدة ما
اي بعبارة اخرى نحن نوجه دلفي أين نريد
كود :
uses
Windows, SysUtils, . . . . ..
. . . . . . . . . . . . . . . . . . . .
procedure TForm1.Button1Click(Sender: TObject);
begin
Windows.Beep(400,100);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SysUtils.Beep;
end;
بهذه الطريقة لن تحدث أي مشاكل
عذرا للإطالة لانني فقط أحب عندما يتوفر لي الوقت ان أتقن و .. اعلًّم الاصطياد بدل تقديم السمكة.
تحياتي
كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة1 user says Thank You to merouane for this post
• ELARAPY
المشاركات : 10
المواضيع 0
:
: 0
الإنتساب : Mar 2008
شكرا على الايضاح وكن عند ضغط CTRL + الضغط بالزر الأيمن للفأرة على كلمة sleep or Beep نجد انه ينقلنا الى مكتبة SysUtils الخاصة بدلي ولا ينقلنا الى مكتبة windows اي يولي الاهمية الى مكتبة ديلفي
فلماذا عند اجراء المثال الاول يعطي خطاء في التجميع بمعنى اوضح لماذا يقوم ديلفي بربطها بالمكتبة الثانية
المشاركات : 334
المواضيع 83
:
: 17
الإنتساب : Feb 2008
snyper كتب :وكن عند ضغط CTRL + الضغط بالزر الأيمن للفأرة على كلمة sleep or Beep نجد انه ينقلنا الى مكتبة SysUtils الخاصة بدلي ولا ينقلنا الى مكتبة windows اي يولي الاهمية الى مكتبة ديلفي
جرب ضع SysUtils قبل windows ثم اضغط على sleep or Beep سيأخذك إلى windows.
إقتباس :فلماذا عند اجراء المثال الاول يعطي خطاء في التجميع
بمعنى اوضح لماذا يقوم ديلفي بربطها بالمكتبة الثانية
لم أفهم السؤال ؟؟
Ala2 VB كتب :http://devala2.wordpress.com/2008/04...splash_screen/
ما قمت به صحيح .. لكن Form1 ستاخذ دائما حيزا في الذاكرة - تخيل شاشة ترحيبية تحتوي صورة ذات دقة عالية أو فيديو أو فلاش.. ألن تريد التخلص من الحجز غير النافع للذاكرة
وأيضا قد تواجه بعض المشاكل -حسب البرمجة- لأن رأس البرنامج سيكون Form1 المخفية ، ونعلم في أغلب البرمجات البسيطة إذا تعطل الرأس ذهب البدن
والسلام