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

ملخص للأوامر والبارامترات المؤثرة في اللغةJ2ME

مغلقرائج
بدأه sih في 28 يوليو 2004 · 77 رد · 6,604 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#51

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

يا أخ مجدي هذا هو المثال ، وأعتقد أني حليت المشكلة لكن بقي رأيك وإذا كان عندك ملاحظات

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class StringToInt extends MIDlet implements CommandListener
	{
Display disply = Display.getDisplay(this);
Command bx=new Command("box",Command.EXIT,0);
Command got=new Command("تنفيذ",Command.SCREEN,0);
//TextField field;
TextBox box =new TextBox("NUMERIC ","",20,TextField.NUMERIC);
Form form = new Form ("");
String str;
int in;
int mm;
public StringToInt() {
}
public void startApp() {
disply = Display.getDisplay(this);
form.addCommand(bx);
box.addCommand(got);	
form.setCommandListener(this);
box.setCommandListener(this);
form.append("بسم الله");	
form.append("");	
form.append("");	
disply.setCurrent(box);
}	
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) 
{
if(c==bx)
{
box.setTitle("أدخل عدد");
box.setString("");
disply.setCurrent(box);
}
if(c==got)
{
str = box.getString()+0; //0+للتخلص من احتمال الخطأ ضع
in =Integer.parseInt(str)/10; //هنا حذف الصفر الزائد
form.delete(1); 
form.delete(1); 
form.append("\nلقد قمت بإضافة عدد"+in);
mm=mm+in;
form.append("\nيكون المجموع"+mm);
disply.setCurrent(form);
}
}
}
#52

جيد يا اخ sih وانظر الى هذا الكود :)

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class StringToInt extends MIDlet implements CommandListener
{
int sum = 0;
Display disply = Display.getDisplay(this);
Form form = new Form ("");
Command got=new Command("تنفيذ",Command.SCREEN,0);
Command cmdExit  = new Command("خروج", Command.EXIT, 1);
TextField box =new TextField("NUMERIC ","",20,TextField.NUMERIC);
TextField box2 =new TextField("Resullt ","",20,TextField.UNEDITABLE);

public StringToInt() {
}
public void startApp() {
disply = Display.getDisplay(this);
form.append(box);
form.append(box2);
form.addCommand(got); 
form.addCommand(cmdExit); 
form.setCommandListener(this);
form.setCommandListener(this);
disply.setCurrent(form);
} 
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) 
{
if (  s == form )
     {
       if (c == cmdExit)
         {
           destroyApp(false);
           notifyDestroyed();
         }
   else if(c== got)
   {
           try{
int temp; 
String l= box.getString()+0;
 int   k=Integer.parseInt(l)/10;
 temp = k;
int m = sum;
sum = sum +temp;
String str=Integer.toString(sum);
box2.setString(""+k+"+ "+m+" ="+str+"");
      }
    catch(NumberFormatException e){System.out.println(e);}

   }
  }
}

}

تم تعديل هذه المشاركة بواسطة مجدي محمود في 28 أكتوبر 2004 في 16:07

لست متواجد بشكل يومي

#53

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

أخ مجدي محمود يبدو أن دائرة try تحتاج مراجعة أو أنها تحتاج تنشيط أحد المكتبات

وبالمناسبة يا أخ مجدي لو تعطينا بعض المعلومات عن دائرة try متى تستعمل أو ماذا نستفيد منها ؟

لأنها غير معروفة في لغات البرمجة التي أعرفها .

#54

يا اخ sih الكود عندي شغال تاكد من انك نسخت الكود بشكل معين

بالنسبة ل try فهي يجب ان تكون على هذه الصيغة

try
{
// do Something
}
cath(Exception e)
{

}

قم بعمل ما واذا لم تستطع اعطينا استثناء معين مثل الرقم المعطى من نوع ليس معروف او اي مثل Exception في RecordStore

لست متواجد بشكل يومي

#55

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

لاحظ UNEDITABLE لا يقبلها المترجم بينما بقبل NUMERIC و ANY

Project "StringToInt" loaded
Project settings saved
Building "StringToInt"
E:\WTK21\apps\StringToInt\src\StringToInt.java:11: cannot resolve symbol
symbol  : variable UNEDITABLE 
location: class javax.microedition.lcdui.TextField
TextField box2 =new TextField("Resullt ","",20,TextField.UNEDITABLE);
                                                        ^
1 error
com.sun.kvem.ktools.ExecutionException
Build failed
#56

اليك الملف وليس به اي مشاكل جربته ولا اعرف اين الخطا وتاكد من انك نسخت الكود بشكل صحيح وهذا هو الملف

ملاجظة . UNEDITABLE موجودة ابتداءا من MIDP 2.0 انا عندي

j2me_wireless_toolkit-2_2-beta

ArabTeam.zip

تم تعديل هذه المشاركة بواسطة مجدي محمود في 1 نوفمبر 2004 في 17:36

لست متواجد بشكل يومي

#57

السلام عليكم

فعلاً قمت بتعديل نظام البرنامج المترجم إلى MIDP 2.0 انا فقام بالترجمة تماماً

ولكن الهاتف عندي لا يدعم التطبيقات على هذا النظام . ، لا يهمني ذلك الآن ولكن

هل من الضروري استخدام UNEDITABLE في مثالنا هذا ؟

ثانياً وهو الأهم أرجو توضيح أكثر عن دائرة try

#58

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

اقتباس
فعلاً قمت بتعديل نظام البرنامج المترجم إلى MIDP 2.0 انا فقام بالترجمة تماماً ولكن الهاتف عندي لا يدعم التطبيقات على هذا النظام

والهاتف عندي نفس المشكلة ولكننا نريد تعلم البرمجة بشكل عام ولا يهمنا اذا كان الهاتف يدعم ذلك ام لا

اقتباس
هل من الضروري استخدام UNEDITABLE في مثالنا هذا ؟

الهدف من استخدام UNEDITABLE هنا هو فقط لاظهار النتيجة وان لا يقوم المستخدم بالعبث فيه وللوضوح يعني من شكله يفهم المستخدم ان فيه سيكون النتيجة ولا يستطيع الكتابة فيه ويمكنك استخدام شئ اخر غير UNEDITABLE ما في اي مشكلة

اقتباس
ثانياً وهو الأهم أرجو توضيح أكثر عن دائرة try

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

اولا يجب ان يكون شكلها عند الاستخدام هكذا

try
{
// do Something
}
cath(Exception e)
{

}

فمثلا

try
{
// do Something
}

معنى ذلك قم بمحاولة عمل جميع ما في هذه الجملة واذا تواجد خطا ما او خلل

قم باعطاء السبب بانك لم تستطع القيام به واكتبه لي عن طريق

cath(Exception e)
{

}

مثلا في المثال السابق

try
{
int temp; 
String l= box.getString()+0;
int   k=Integer.parseInt(l)/10;
 temp = k;
int m = sum;
sum = sum +temp;
String str=Integer.toString(sum);
box2.setString(""+k+"+ "+m+" ="+str+"");
    
 }

حاول القيام بهذه الاوامر مثل حول ما تم كتابته في box وحوله الى String ومن ثم حول هذا String الى Integer واجمعه مع sum ثم حول sum الى String واكتبه في box2 واذا لم تستطع اعطني السبب وهذا مل نعالجه عن طريق

 catch(NumberFormatException e){System.out.println(e);}

مثلا اذا كان المدخل من نوع double وهي ليست موجودة في مكتبات J2ME فانه لايقوم بتنفيذ try ويعطينا السبب عن طريق catch وهو ان الرقم المدخل ليس مفهوم للمترجم

لست متواجد بشكل يومي

#59

السلام عليكم,

أخي مصعب, سبق و قلت حو موضوع الحذف ما يلي:

اقتباس
اما عن مسح الشاشة فهناك طرق كثيرة اخرى غير هذة الطريقة

مثلا اذا كانت فورم ستستخدم الامر

Delete

واذا كان صندوق نص استخدم العبارة

setString("");

الرجاء شرح تعليمة الحذف بشكل أوسع مثلاً : كيف يمكن حذف Command بعد تعريفه؟

أي اذا أردنا مسح الصفحة الأولى:

form.deleteAll();

ثم نريد تعريف Commands مكان المعرفين سابقاً لاستخدامات جديدة!

باختصار أقترح بدء مجموعة دروس تهتم بهذه الأوامر لإثراء معلومات مبتدئين برمجة J2ME.

مع الشكر سلفاً.

رامي

#60
اقتباس
الرجاء شرح تعليمة الحذف بشكل أوسع مثلاً : كيف يمكن حذف Command بعد تعريفه؟

form.removeCommand(cmdExit);

اقتباس
ثم نريد تعريف Commands مكان المعرفين سابقاً لاستخدامات جديدة!

form.addCommand(cmdNew);

اقتباس
باختصار أقترح بدء مجموعة دروس تهتم بهذه الأوامر لإثراء معلومات مبتدئين برمجة J2ME.

يا اخي شغلات مثل هيك صغيرة ولا تحتاج الى الشرح يعني تحتاج الى خبرة في OOP في الجافا واستخدام Class Summary يعني ما بتنشرح .

لست متواجد بشكل يومي

#61

السلام عليكم,

شكراً أخ مجدي على تواصلك معنا.

اقتباس
يا اخي شغلات مثل هيك صغيرة ولا تحتاج الى الشرح يعني تحتاج الى خبرة في OOP في الجافا واستخدام Class Summary يعني ما بتنشرح .

أنا معك بأنها شغلات صغيرة ( بالنسبة لخبرتك أنت ), بس أنا لا أزال صغير في برمجة الجافا!

رجاءً التكرم بنصيحتي بأفضل الكتب التي يمكن أن تفيدني في هذا المجال.

مع الشكر سلفاً.

#62
اقتباس
أنا معك بأنها شغلات صغيرة ( بالنسبة لخبرتك أنت ), بس أنا لا أزال صغير في برمجة الجافا!

يا اخي هذه اسماء لاساليب يعني لا استطيع شرحها ولعك لم تفهم ما اقصد انا قصدت بان هذه الاساليب المهم ان تعرف كيف تستخدمها اذهب الى العنوان التالي وستجد جميع الاساليب والحزم المستخدمة فيها http://www.wmlscript.it/j2me/api20/index.html

يعني اي شخص عند كتابة برنامج معين لازم ينظر الى هذه الاساليب .

اقتباس
رجاءً التكرم بنصيحتي بأفضل الكتب التي يمكن أن تفيدني في هذا المجال.

انا لا املك كتب وقم بالبحث في الكتب التي وضعها مصعب والشباب

لست متواجد بشكل يومي

#63

شكراً أخ مجدي,

بالنسبة لهذه الأساليب موجودة عندي و لكن البحث فيها ليس سلس مثل باقي ملفات المساعدة في البرامج الأخرى ( VC++ , VB , الخ ).

رامي

#64

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

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

لا يزال عندي غموض في استخدام () try() , catch

متى نستخدمها ؟

هل يمكن أن نستغني عنها ؟ وماذا يجري لو لم نستخدمها ؟

هل لها بدائل أو مشابهات ؟

هل ينفذ المعالج ما بداخلها على التوالي مع ما قبلها وما بعدها بدون انتظار أم أنه في نهايتها ينتظرتنفيذ جميع ما بداخلها قبل الإنتقال منها ؟

catch(NumberFormatException e){System.out.println(e);}

في اعتقادي أن استخدام ;( System.out.println(e غير صحيح في الأمثلة السابقة من هذا الموضوع هل يوجد بدائل مناسبة لإظهار النتائج ؟

هل يمكن الأستغناء عن هذا الجزء {(System.out.println(e} بأقواس فارغة هكذا {} ولا نفقد شيء مهم ؟

#65
اقتباس
متى نستخدمها ؟

اكثر مما قلته عنها بصراحة لا استطيع ابحث في جوجل او كتاب جافا بالعربي

اقتباس
هل يمكن أن نستغني عنها ؟ وماذا يجري لو لم نستخدمها ؟

هل لها بدائل أو مشابهات ؟

واستخدامها افضل حتى تعرف سبب الخطا الذي من اجله لم يشتغل البرنامج وليس لها بدائل .

اقتباس
هل ينفذ المعالج ما بداخلها على التوالي مع ما قبلها وما بعدها بدون انتظار أم أنه في نهايتها ينتظرتنفيذ جميع ما بداخلها قبل الإنتقال منها ؟

يحاول بالاول تنفيذ ما بداخل try واذا لم يستطع يعطيك السبب عن طريق catch

اقتباس
في اعتقادي أن استخدام ;( System.out.println(e غير صحيح في الأمثلة السابقة من هذا الموضوع

بل هو صحيح 100% حتى يعرف المبرمج اين الخطا الذي بسسببه لم يتم تنفيذ البرنامج بالشكل الصحيح و ليس المستخدم وحتى اذا لم تستخدمها سيقوم باعطاءك الخطا .

اقتباس
هل يمكن الأستغناء عن هذا الجزء {(System.out.println(e} بأقواس فارغة هكذا {} ولا نفقد شيء مهم ؟

نعم تستطيع الاستغناء عنه وكمان عن try and catch ولكن الافضل استخدامها واذا لا تريد استخدامها كمان ليست مشكلة ولكن افضل استخدامها انا شخصيا

لست متواجد بشكل يومي

#66
في اعتقادي أن استخدام;( System.out.println(e غير صحيح في الأمثلة السابقة من هذا الموضوع

أخ مجدي أنا أقصد ان أن البرنامج يهملها ولا يكتب أي نتيجة لها

أنا حاولت من قبل استخدامها هكذا ;("بسم الله" ) System.out.println

ولا يظهر لها أي أثر ولا حتى خطأ ما أدري ليش (طبعا في بداية تجاربي)

إلا إذا كان لها خاصية مع try and catch

#67

;("بسم الله" ) System.out.println

بلى يقوم بطباعتها ولكن ليس شاشة الجوال وانما على ال KToolbar لاحظ ذلك

لست متواجد بشكل يومي

#68

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

في لعة J2ME

هل يمكن أن نجعل منطقة commandAction تتحسس مضي وقت معين بدون ضغط أي مفتاح

ثم يقوم بعمل معين كأن ينفذ هذين السطرين

;"انتهى الوقت"alert.setString

;(display.setCurrent(alert

#69
اقتباس
هل يمكن أن نجعل منطقة commandAction تتحسس مضي وقت معين بدون ضغط أي مفتاح

نعم وقم بالتفكير انت وحاول ايجاد الحل واذا ما عرفت ساخبرك

تم تعديل هذه المشاركة بواسطة مجدي محمود في 8 مارس 2005 في 10:54

لست متواجد بشكل يومي

#70

أخ مجدي ما أذكر انها مرت علي ولكن أنت دائما تنوه باستخدام توظيف تحسس مضي وقت باستخدام Alert

مثل ;(alt.setTimeout(1000

لكن عندما ينفذ البرنامج هذا الشرط

public void commandAction(Command c, Displayable s)
{
if(s==list){
//list.setTimeout(1000);
t++;
if(t>=10000){
alert.setString("انتهى الوقت");
disp.setCurrent(alert,form); 
}}

فإن العداد هنا يكون مقيد مع سير البرنامج وليس حراً

فأنا أريد تحسس الوقت أثناء تنفيذ فورم أو ليست

وشكرا على مساعدتك والله يحفظك .

#71

أخ مجدي أعتقد أنك إذا قرأت هذا الكود تقول هذا غبي لأنه لا يمكن أن ينفذ المطلوب مالم نضغط أحد المفاتيح 10000مرة

أنا أريد أن البرنامج يمر بهذه الدائرة 10000مرة بدون ضغط أي مفتاح وبنفس الوقت تحسس CommandListener للمفاتيح يعمل

لكن أنا أحبيت انك تفهم الفكرة أرجو سرعة الرد للأهمية بارك الله فيكم .

#72

هذه الذي تقوله او تحسس الوقت ما رح يزبط الان خطرت في بالي والسبب

اقتباس
أن نجعل منطقة commandAction تتحسس مضي وقت معين بدون ضغط أي مفتاح

لان هذا الاسلوب سيتم استخدامه في حالة واحدة فقط وهي عندما تضغط اي مفتاح فمثلا اذا لم تضغط اي زر فانه لن يقوم باستخدامه اصلا لذلك لن ينفذ اي شئ موجود في هذا الاسلوب.

لست متواجد بشكل يومي

#73

لماذا تريد وضعه في Command Lisetener، ضعه في المنشئ مثلا، واستخدم Thread(new Ruunable())

#74

أخ مجدي : ماهو الحل رأيك ؟؟

أخ أبو مازن أنا خبرتي بالجافا جديدة أرجو أن تكتب صيغة استخدام (()Thread(new Ruunable

بارك الله فيكم ونفع بعلمكم .

#75

انظر إلى الوصلات،،،

http://www.wmlscript.it/j2me/api20/java/util/Timer.html

http://www.wmlscript.it/j2me/api20/java/util/TimerTask.html

public MyMIDlet extends MIDlet{
	Timer timer;
	public MyMIDlet(){
  timer=new Timer();
	}

	public void startApp(){
  timer.schedule(new TimerTask(){
  	public void run(){
    doYourSpecialeJob();
  	}
  }, 1000);//Every Second كل ثانية;
	}

	public void doYourSpecialJob(){
  
  display.setCurrent();
	}
}

لم أجرب الشفرة!!! إذا صدرت أخطاء فتصرف!! :)

تم تعديل هذه المشاركة بواسطة أبومازن في 10 مارس 2005 في 03:42

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…