التعامل مع الحافظة ClipBoard

بسم الله الرحمن الرحيم

الحافظة في البداية هي مثل مساحة في الذاكرة , يتم حجزها لوضع البيانات المؤقتة للتطبيقات التي تعمل في الوقت الحالي . وهذه البيانات مثل الكلمات التي تم نسخها من خلال أمر “نسخ” في أي محرر نصوص , أو الصورة التي تلتقطها عندما تضغط زر PrintScreen , فهذه كلها يتم تخزينها غالباً في ذاكرة الجهاز .

يمكنك أن ترى ما تحتويه الحافظة من خلال الخطوات التالية :

  1. الآن , اذهب إلى Start ثم Run
  2. اكتب “clipbrd” بدون علامات اقتباس
  3. ستظهر نافذة الحافظة ClipBoard , وسترى فيها آخر ما قمت بنسخه
  4. قم مثلاً بضغط زر PrintScreen ولاحظ ما يحدث

الحافظة في دلفي .

منطقياً .. لاستعمال الحافظة في دلفي يجب علينا أن نعرفها للبرنامج بإضافة الوحدة Clipbrd

الآن , اكتب كلمة ClipBoard ثم ضع بعدها نقطة , ستظهر لك الآن قائمة بخصائص الكائن Clipboard .

التعامل مع الحافظة :

الخاصية التي تحتوي على محتويات الحافظة هي AsText , فمثلاً لنقل محتويات مربع نص إلى مربع آخر :

[Sourcecode language = "delphi"]

Clipboard.AsText := Edit1.Text ;

Edit2.Text := Clipboard.AsText ;

[/sourcecode]

ملاحظة : هذه التدوينة مسودة منذ أكثر من 3 سنوات (منذ 2008 :D )

جائزة نوبل في الفيزياء 2011

بسم الله الرحمن الرحيم

Official Nobel Prize in Physics 2011

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

هذا العام .. بالأمس القريب , حصل 3 علماء فيزياء (Saul Perlmutter , Brian P. Schmidt , Adam G. Riess) على جائزة نوبل في الفيزياء , لاكتشافهم أن اتساع الكون في تسارع مستمر , بعد مراقبتهم ودراستهم لمستعر (Supernova) بعيد عن الأرض .

(المستعر العملاق Supernova : هو إنفجار نجمي هائل , يطلق إشعاعات ضوئية تضيء مجرة بأسرها , قبل أن يتلاشى خلال بضعة شهور أو أسابيع , خلال هذه الفترة يطلق هذا الانفجار طاقة تساوي مقدار طاقة الشمس التي تطلقا طوال عمرها , ويتسبب أيضاً في تشتيت مكونات النجم المنفجر , وانطلاقها بسرعة تصل إلى 10% من سرعة الضوء !)

في البداية كان متوقع أن الاتساع الكوني في تباطؤ , لكن في عام 1998 اكتشف العلماء ما يناقض هذه التوقعات , وهو أن التسارع في ازدياد , وأنه قد بدأ منذ قرابة 4.5 مليار سنة -أي تقريباً نفس الوقت الذي تكون فيه نظامنا الشمسي- . يعتقد أيضاً أن السبب وراء ذلك هو ما يسمى Dark Energy وهو شكل غير مرئي من الطاقة يشكل ثلاث أرباع كتلة الطاقة في الكون , ولا يعرف العلماء عنها شيئاً حتى الآن !

بعض النظريات ترى أن الطاقة المظلمة Dark Energy منتشرة في كل الكون , البعض الآخر يرى ان كثافتها تختلف من منطقة إلى أخرى , وأخرى ترى أن لها علاقة بالجاذبية وحقيقة عملها .

و لمحاولة دراسة كل هذه الظواهر العظيمة , سيحتاج العلماء والباحثون وعلماء الفضاء إلى أجهزة متطورة جداً -وغالية جداً !-  يمكنها رصد ومراقبة هذه الظواهر على بعد ملايين الكيومترات من الأرض .

فسبحان الله القائل : “والسماء بنيناها بأيد وإنا لموسعون” (الذاريات 47) :)

المصادر :

http://www.sciencenews.org/view/generic/id/334907/title/Cosmic_acceleration_discovery_wins_physics_Nobel

http://en.wikipedia.org/wiki/Supernova

Syntax Error in FROM clause with Access 2010

بسم الله الرحمن الرحيم

كل عام وانتم بخير ..

بعد عناء طويل أنهيت تحميل ملف من الانترنت , حجمه 7 جيجا بايت . المشكلة أنني فوجئت أن الملف لا يعمل , ويظهر رسالة خطأ غربية تقول ان هناك خطأ في الملف (لكن أين ؟!!!)

حاولت بجميع الطرق الممكنة , لعدة ساعات ولكن دون جدوى .

اكتشفت لاحقاً .. ان اسم المجلد الذي يحتوي على هذا الملف يحوي حرفاً روسياً ! قمت بإعادة تسمية المجلد , والحمد لله عمل بنجاح !

قبل عدة أيام .. كنت اعمل على مشروع قاعدة بيانات , وكان من الأيسر لي تسمية اسماء الجداول بأرقام مع الرمز /

قمت بربط البرنامج بقاعدة البيانات بطريقة صحيحة , ومجربة في برامجي الأخرى , ولكن دائماً ما كانت تظهر رسالة Syntax Error in FROM clause

اعتقدت في البداية أن المشكلة في طريقة الربط , لأنها المرة الأولى التي استعمل فيها Access 2010 , وبعد عدة محاولات تركت العمل على هذا البرنامج

(في الربط مع Access 2003 كنت أستعمل Jet 4.0 OLE DB -في خاصية ConnectionString لأداة ADOTable- , لكن اتضح انه مع Access 2010 -اللاحقة accdb- يجب استعمال Office 12.0 Access Database Engine OLE DB)

قبل قليل والحمد لله .. اكتشفت ان الخطأ في المشروع كان في قاعدة البيانات نفسها .. وبالأخص في الرمز / , بمجرد إزالته (وتأكيد اسم الجدول الجديد في ADOTable في برنامجي) عمل بنجاح

الغريب أن Access سمح بوجود هذا الرمز في الجدول , و أداة  ADOTable يظهر اسم الجدول (مع وجود الرمز /) في خاصية Table . هذا هو السبب الذي جعلني أتأخر في تحديد الخطأ وأدى لتعطل مشروعي وإضاعة وقت في تأليف حلول إبداعية :)

أردت التنويه لهذه المشكلة , فقد تخفى بعض المبرمجين (خاصة عند العمل لوقت متأخر ;)

0×00000116: VIDEO_TDR_ERROR Solution

بسم الله الرحمن الرحيم

 Hi all ..

I have encountered a very annoying BSOD (Blue Screen of Death) every time I play StarCraft II (or few other game) , with my Acer Aspire 5750G .

I was surprised when I knew that was because of my video card , since I was sure my laptop is still new ,my video card is not that bad and I could play StarCraft II on Ultra settings before , for a while .

The true cause of this trouble is Overheat , there are few reasons for this :

1. You are using the laptop on the wrong surface , like a Bed or a Carpet . Try using the laptop on a Desk or a Table .
2. Room temperature is very hot , or the laptop’s fan is closed (or filled) for some reason (Dust in most cases) .
3. Working on the laptop for too many hours  .
The main solution for this problem is a cool CoolingPad for the laptop (or a fan at the side of the PC to cool the inner parts) . But what if you don’t have (or can not afford) a CoolingPad right now ?
I have been trying few things , they helped much , and the number of BSOD’s has reduced .

Lower graphics settings : Instead of Ultra or High settings , try using Medium or Low . In some games , it will recommend a specific graphic level for your machine .

Use the laptop for less hours , on good surface and in good temperature . I am sure you tried all of those , and even when I did , it didn’t help , those are just basic solutions .

nVidia Control Panel (Custom) :

- In the control panel (in my case , I have nVidia graphic card) choose “NVidia Control Panel” , or right-click on your desktop and choose “nVidia Control Panel” .
- From the tree at the left side of nVidia control Panel , choose Manage 3D settings .
- Choose “Program Settings” tab .
- From the list , select the game (or the program) that cause the Overheat and the BSOD to appear . (or click add if it is not in the list)
- From the second list , select another graphic card to run the game , try them all until you find one that works . (many laptops support more than 1 graphic card)
Please note : some games have some problems with some graphic cards ! if that’s so , go to the second solution .

nVidia Control Panel (General) :

I began with the custom solution , since this one will affect all the games and programs on your machine .

- From the same nVidia Control Panel , and from the tree on the left , select “Adjust image settings with preview” .
- Select “Use my preference emphasizing” from the 3 options in the “Adjust image settings with preview” page .
- Move the slide bar under the 3rd option to the left , near the word “Performance” .

Those 2 solution may not work in few cases , since some games don’t run correctly with some graphic cards . But I have tried all of them , and the number of BSOD’s has reduced . give it a try it worth it :)

And still , the most efficient solution is to buy a CoolingPad , I am planning to buy one soon , and I hope it works permanently (heared Zalman NC2000 is perfect , I hope to find it in Egypt :) )

Decimal to Binary

بسم الله الرحمن الرحيم

عشري إلى ثنائي :

الطريقة الأولى :

1-      كتابة جميع قوى الأساس 2 (بدءاً من 2صفر ) إلى أقرب قوة أقل من الرقم العشري

2-      بما أن الرقم العشري أكبر من القوة الاخيرة , يكتب 1 في ناتج التحويل (بدءاً من اليسار)

3-      طرح القوة من العدد العشري

4-      يقارن ناتج الطرح بالقوة التالية في سلسلة قوى 2 , إن كانت القوة أقل منه يكتب 1 وإلا يكتب 0

5-      تطرح القوة من ناتج الطرح

6-      تكرر العملية حتى الوصول إلى 12

مثال : 143

قوى 2 : 1 , 2 , 4 , 8 , 16 , 32 , 64 , 128 (128 أقرب قوة أقل من 143)

143 – 128 = 15      (الناتج 1)

64 أكبر من 15           (الناتج 0)

32 أكبر من 15           (الناتج 0)

16 أكبر من 15           (الناتج 0)

15 – 8 = 7              (الناتج 1)

7 – 4 = 3                (الناتج 1)

3 – 2 = 1                (الناتج 1)

1 – 1 = 0                (الناتج 1)

يكون الناتج النهائي بالنظام الثنائي : 10001111

الطريقة الثانية :

1-      بتكرار قسمة العدد العشري على 2 , وتسجيل باقي كل عملية

2-      ناتج التحويل هو بترتيب البواقي الناتجة (بدءاً من الأسفل إلى الأعلى)

مثال : 143

143 / 2 = 71           (الباقي 1)

71 / 2 = 35             (الباقي 1)

35 / 2 = 17             (الباقي 1)

17 / 2 = 8               (الباقي 1)

8 / 2 = 4                (الباقي 0)

4 / 2 = 2                (الباقي 0)

2 / 2 = 1                 (الباقي 0)

1 / 2 = 0                (الباقي 1)

إذا يكون ناتج التحويل (بترتيب البواقي بدءاً من الأسفل) : 10001111

Binary and Hex

بسم الله الرحمن الرحيم

ثنائي إلى ست عشري :

1-      يقسم العدد الثنائي إلى أجزاء كل منها عبارة عن 4 خانات

2-      باستخدام الجدول التالي , التعويض عن كل 4 خانات ثنائية بما يقابلها من النظام الست عشري

0

1

10

11

100

101

110

111

0

1

2

3

4

5

6

7

1000

1001

1010

1011

1100

1101

1110

1111

8

9

A

B

C

D

E

F

            مثال : 011101011000011001101001010

            1010 | 0100 | 0011 | 0011 | 1100 | 1010 | 011

           A | 4 | 3 | 3 | C | A |3=3AC334A

ست عشري إلى ثنائي :

1- يحول كل رمز ست عشري إلى نظيره بالنظام الثنائي , لكن يجب أن يكون مكون من 4 خانات (5 مثلاً = 0101)

2- يتم التخلص من الأصفار على اليسار

مثال : A5 تصبح 10100101 (A = 1010 , 5 = 0101)

Binary and Oct

بسم الله الرحمن الرحيم

طريقة التحويل من النظام الثنائي إلى الثماني والعكس , تعتمد على التعويض فقط .

ثنائي إلى ثماني :

1-      بدءاً من اليمين , يقسم الرقم الثنائي إلى أجزاء كل منها يمثل 3 خانات (نترك ما يتبقى كما هو)

2-      يحول كل جزء إلى ما يماثله من النظام العشري

3-      أو بالتعويض عن كل 3 خانات ثنائية بما يقابلها من النظام الثماني

000

001

010

011

100

101

110

111

0

1

2

3

4

5

6

7

4-      لاحظ أن الأصفار في أقصى اليسار لا تهم , فالقيم 1 , 01 , 001 متساوية (في أقصى يسار الرقم)

مثال : 10111011001110

110 | 001 | 011 | 111 | 10

6 | 1 | 3 | 7 | 2 = 27316

ثماني إلى ثنائي :

1-      يقسم العدد الثماني إلى اجزاء كل منها خانة واحدة

2-      التعويض عن كل قيمة ثمانية بما يقابلها بالنظام الثنائي باستخدام الجدول .

Binary to Decimal

بسم الله الرحمن الرحيم

طريقة التحويل من النظام الثنائي إلى العشري

الطريقة الأولى

1-      بدءاً من اليمين , تكتب قوى العدد 2 , ابتداءاً من الأس صفر إلى أن يصبح عدد القوى = عدد خانات الرقم الثنائي

2-      يفضل كتابة القوى مقابلة لخانات الرقم , بحيث تكون كل خانة مقابلة لإحدى القوى

3-      تجمع القوى المقابلة للخانات التي تحتوي على الرقم 1 فقط

مثال : 11010111101

1

0

1

1

1

1

0

1

0

1

1

1

2

4

8

16

32

64

128

256

512

1024

1 + 0 + 4 + 8 + 16 + 32 + 0 + 128 + 0 + 512 + 1024 = 1725

الطريقة الثانية

1-      بدءاً من اليسار , بالمرور على كل خانة , يضاعف المجموع الحالي (بدءاً من الصفر طبعاً) ويجمع عليه رقم الخانة

مثال : 111101

المجموع

الضعف

رقم الخانة

المجموع الجديد

0

0

1

1

1

2

1

3

3

6

1

7

7

14

1

15

15

30

0

30

30

60

1

61

مقدمة إلى أنظمة العد

بسم الله الرحمن الرحيم

من المعروف ان جهاز الكمبيوتر لا يتعامل مباشرة مع جميع الأرقام والحروف ,إنما 1 (وجود إشارة كهربائية) و 0 (عدم وجود إشارة كهربائية) , وهذا ما يعرف بنظام العد الثنائي , أما في حياتنا اليومية , وفي المسائل الرياضية التي يتعامل معها معظمنا نستخدم نظام العد العشري 0 , 1 , 2 … 123 ..

طبعاً النظام العشري يتكون من 10 أرقام أساسية (من 0 إلى 9) , ثم بعد ذلك 11 , 12 .. , لكن في النظام الثنائي , وبما أنه يتكون من رقمين أساسين فقط , فسيكون العد به يبدأ من 0 , 1 , 10 , 11 , 100 , 101 , 110 , 111 , 1000 , 1001 وهكذا .

النظام الثماني يتكون من الأرقام 0..7 , لا يوجد 8 ولا 9 . فيكون الرقم العشري 7 بالنظام الثماني 7 , لكن 8 بالعشري هو 10 بالثماني , 16 عشري هو 20 بالنظام الثماني وهكذا .

النظام الست عشري (او االسداسي عشري , السداس عشري :) ) يتكون من الأرقام 0..9 و الحروف الإنجليزية A..F , الرقم العشري 16 يقابل 10 بالست عشري , 32 يقابل 20 بالست عشري , 160 عشري تقابل A0 بالت عشري

 في الإنجليزية : Binary تعني الثنائي , Octal الثماني , Decimal العشري , Hexadecimal الست عشري (Hex تعني ستة , و Decimal تعني عشري) .

عند كتابة الرقم 10001101  يتم التعبير عن النظام الممثل للرقم بكتابة رقم الأساس مصغر في أسفل يمين الرقم الأساسي .

في النظام العشري الأساس هو 10 , لدينا خانات للآحاد (10 أس 0) , العشرات (10 أس 1) , المئات (10 أس 2) , الألوف (10 أس 3) ..

لكن في النظام الثنائي الأساس هو 2 , فستكون الخانة الآولى آحاد , الثانية 2 , الثالثة 4 , الرابعة 8 , الخامسة 16 وهكذا

في النظام الثماني الأساس 8 , الخانات ستكون 1 , 8 , 64 , 512 .. , وفي الست عشري الأساس 16 ..

ملاحظة : في النظام الست عشري يكتب اللاحقة h أو البادئة 0x للدلالة على ان الرقم بنظام Hex .

في تصنيف “نظم العد” وضعت 6 طرق للتحويل مباشرة بين هذه الأنظمة , للتحويلات الأخرى (مثلاً Hex إلى Oct , يحول Hex إلى Binary ثم إلى Oct)

هذا الجدول يوضح أول 16 قيمة في الأنظمة الأربعة :

Bin

0

1

10

11

100

101

110

111

Oct

0

1

2

3

4

5

6

7

Dec

0

1

2

3

4

5

6

7

Hex

0

1

2

3

4

5

6

7

Bin

1000

1001

1010

1011

1100

1101

1110

1111

Oct

10

11

12

13

14

15

16

17

Dec

8

9

10

11

12

13

14

15

Hex

8

9

A

B

C

D

E

F

قد يبدو الأمر مربكاً في البداية , وهذا لعدم استخدام هذه الانظمة في الحياة اليومية كثيراً ,إذا تقتصر استخداماتنا العادية على النظام العشري فقط .

هذه مقدمة بسيطة جداً عن هذه الأنظمة , وإن شاء الله سأشرح طرق التحويل الأساسية الستة لهذه الأنظمة :)

حل المشكلة رقم 2 – Project Euler

بسم الله الرحمن الرحيم

المشكلة 2 من Project Euler

المطلوب : مجموع القيم الزوجية الأقل من 4.000.000 في متوالية Fibonacci والتي تقبل القسمة على 3 أو 5 .

متوالية Fibonacci : متوالية كل حد فيها هو حاصل جمع الحدين السابقين له , بدءاً بالحدين 1 , 2 ( بالتالي أول عشرة حدود : 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 )

فكرة الحل : حلقة تتأكد من أن العدد قابل للقسمة على 3 و 5 و أنه أقل من 4 ملايين .

الكود :

var
 i1 , Sum : integer ;
 i2 , Tmp : integer ;

begin
 Sum := 0 ;
 i2 := 1 ;
 i1 := 0;

 repeat
 // Generating the sequence
 Tmp := i2 ;
 i2 := i2 + i1 ;
 i1 := Tmp ;

 // Checking the number
 if (Odd(i1) = False) and (i1 < 4000000) then
 Sum := i1 + Sum ;

 until i2 >= 4000000 ;

 Writeln(IntToStr(Sum)) ;
 Readln ;

end.
<strong>

ملاحظة : لم أضع حل المشكلة الأولى لأنها سهلة جداً.

وإن شاء الله سأضع حل المشكلة الثالثة والرابعة خلال الأسبوع الحالي