-
المساهمات
27 -
تاريخ الانضمام
-
تاريخ آخر زيارة
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة رفيق هادي مبارك هادي مشعيل
-
-
السلام عليكم ورحمة الله وبركاتة
لدي كود بلغة c من نوع متقدم (اي هياكل بيانات بـstruct) .
يوجد لدي ثلاث دوال احداها للاضافة واثنتان للبحث.
الدوال جاهزة .
الذي اريدة هو كيف يمكنني استدعاء تلك الدوال في main().هذا هو الكود:#include <stdlib.h> #include <iostream.h> #include <string.h> #include <stdio.h> #include <conio.h> //التصريح عن المتحوالت التي تمثل الانماط الاربعة #define _int 1 #define _float 2 #define _str 3 #define _chr 4 //تعريف تركيبة تمثل بنية جدول الرموز typedef struct sym_node { char name[51]; struct sym_node *next; int type; }; //sym_node sym_node *sym_table = NULL; // الرموز جدول إنشاء //اضافة رمز تابع الى جدول الرموز sym_node *put_sym(char *sym_name, int sym_type) { sym_node *ptr; ptr = (sym_node *)malloc(sizeof(sym_node)); strcpy(ptr->name, sym_name); ptr->type = sym_type; ptr->next = (sym_node *)sym_table; sym_table = ptr; return ptr; } //البحث عن رمز ضمن جدول الرموز sym_node *get_sym(char *sym_name) { sym_node *ptr; for(ptr=sym_table;ptr!=NULL;ptr=(sym_node*)ptr->next) if(!strcmp(ptr->name,sym_name))return ptr; return NULL; } //التحقق من نوع بيانات الرمز int get_sym_type(char *sym_name) { sym_node *ptr; for(ptr=sym_table;ptr!=NULL;ptr=(sym_node*)ptr->next) if(!strcmp(ptr->name,sym_name)) return ptr->type; return 0; } int main(){ }
مشكورين مقدما وجزاكم الله كل خير
-
اجعل نسب عرض وطول الصورة نسبية بدلا من وضعها نسب ثابتة
width="100%" بدلا من px
وكذلك height
- 1
-
-
-
السلام عليكم ورحمة الله وبركاتة
قمت بعمل تطبيق بالجافا للاندرويد ، ومن محتوياته كود لحذف عدة ملفات بعظها في التخزين الداخلي واخرى في التخزين الخارجي.
وهذا هو الكود:
اولاً : قمت بعمل دالة للحذف:public void funDelete(File folder){ try{ File[] cont_file=folder.listFiles(); for(File file : cont_file){ file.delete(); } } catch(Exception ex){ //Toast.makeText(c,ex.getMessage(),1).show(); } }
ثانياً : استدعاء دالة الحذف://كل المسارات String [] paths={"/storage/emulated/0/SHAREit/download/videos/.caches" ,"/storage/sdcard1/SHAREit/download/videos/.caches" ,"/storage/sdcard1/Android/data/com.lenovo.anyshare.gps/files/SHAREit/download/videos/.caches"}; for(String path : paths){ try{ File folder=new File(path); if(folder.exists()) funDelete(folder); } catch(Exception ex){ Toast.makeText(c,ex.getMessage(),1).show(); }
وقمت بعمل الاكواد الاخرى التي يتطلبها التطبيق كالصلاحيات التي في ملف androidmanifest.xml
<!-- قراءة محتويات بطاقة SD --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <!-- تعديل محتويات بطاقة SD أو حذفها --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
وكذلك الكود الذي يطلب من المستخدم باعطاء الصلاحية لهذا التطبيق او رفضها والكود كالاتي :
//دالة للتأكد من اصدار الاندرويد protected boolean shouldAskPermissions() { return (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1); }
// @TargetApi(23) //دالة اعطاء الصلاحيات او رفضها protected void askPermissions() { String[] permissions = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" }; int requestCode = 200; requestPermissions(permissions, requestCode); }
حيث يتم استدعاء الدالتين كالاتي :
if (shouldAskPermissions()) askPermissions();
المشكلة التي حصلت لدي انه فقط يتم حذف الملفات التي في التخزين الداخلي
"/storage/emulated/0/SHAREit/download/videos/.caches"
اما التي في التخزين الخارجي فانه لا يتم حذفها
,"/storage/sdcard1/SHAREit/download/videos/.caches" ,"/storage/sdcard1/Android/data/com.lenovo.anyshare.gps/files/SHAREit/download/videos/.caches"
ولكن عندما قمت بعملية قراءة (عرض) الملفات التي في التخزين الخارجي تم بنجاح ، اي ان المشكلة هنا هي في الكتابة على الملف (كاضافة ملف او حذفه).
بصراحة بحث في النت عن اكواد ولكن لم استطع ان اوصل لحل مشكلتي.للعلم انا اتعامل مع Android X في البرمجة
-
في الاصدارات القديمة من الاندرويد اذا كنت تريد لتطبيقك بالوصول الى الملفات في الذاكره كان يكفي ان تضع هذين السطرين في ملف androidmanifist.xml فقط:<!-- قراءة محتويات بطاقة SD --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <!-- تعديل محتويات بطاقة SD أو حذفها --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
وعندما يتم تثبيت التطبيق يكون قد تم السماح بالقراءة والكتابة من ذاكرة الهاتف وكذلك الذاكرة الخارجية.
ولكن في الاصدارات الجديده من اندرويد حتى وان تم تضمين السطرين السابقين فلا بد من كتابة كود يعرض رساله للمستخدم ليسمح للتطبيق بالوصول او يرفضه ، واذا سمح بالوصول هنا فانه يسمح بالقراءة والكتابة في ذاكرة الهاتف فقط اما الذاكرة الخارجية فانه فقط يسمح بالقراءة منها فقط ، اي لا بد ان يكتب المبرمج كود آخر خاص يعرض رسالة اخرى تطلب من المستخدم تفويض التطبيق للكتابة في الذاكرة الخارجيه.السؤال :
انا عملت تطبيق يتعامل مع الملفات وعندما اقوم باستعراض ملف من الذاكرة الخارجية يتم بنجاح ولكن عندما اقوم بانشاء ملف جديد او حذف ملف لا يعمل اي شيء (لا يتم).
وعندما بحثت في عدة مواقع في النت وجدت الكود المطلوب وهو كود طويل شي ما ولكن لا مشكلة فالمشكلة هي :
ان اجزاء من ذلك الكود مأخوذه من الكلاس ActionCompat وانا اتعامل مع الكلاس Action فهل :
اذا ردت ان اجعل تطبيقي يطلب من المستخدم اعطاءة تفويض للكتابة (permission write) على الذاكرة الخارجية (sd) .
هل احتاج الى AndroidCompat التي يرث كلاس النشاط فيها من كلاس ActivityCompat بدلا من كلاس Activity. -
-
المشكلة انه لا يمكن تنفيذ هذه العمليه(اي الحصول على التطبيقات النشطه حاليا) من اندرويد لوليب (Android L) والنسخ التاليه بغرض الامان.
عندما جربت التطبيق الذي عملته بنفس الكود الذي تفظلت به على نسخ قديمه من اندرويد تم بنحاح.
على العموم مشكور اخي وحزاك الله خيرا
-
بتاريخ 2 ساعات قال Hassan Hedr:
المنبة لا يعمل بطريقة BroadcastReciever بل يستخدم مدير التنبيهات AlarmManager، المشكلة لا يمكنك التحكم متى سيذهب تطبيقك لحالة Sleep من قبل النظام، يعتمد ذلك على العمل الذي ترغب في فعله فقد تجد طريقة أخرى لتنفيذه
ولكن AlarmManager يستدعي كلاس BroadcastReceiver
انا فقط بدلا من جعل العمل يتنفذ في فترات زمنيه متعاقبه جعلته يتنفذ عند حدوث تغيير في حالة wifi.
المشكلة هي في ان النظام يحاول ان يجعل النظام يعمل باداء جيد كما اسلفت انت ولحل المشكلة على مستخدم التطبيق ان يقوم بقفل التطبيق حتى لا يتم ازالته من الرام تلقائيا
الصورة التاليه توضح ذلك
بتاريخ 2 ساعات قال Hassan Hedr: -
استعمل group by اي تجميع بواسطة ، وحدد عمود ip ليتم التجميع على اساسه كالاتي :
select colum_state , count(colum_id) from name_table groub by colum_id;
colum_state عمود اسم الدوله
name_table اسم الجدول
-
ولكن الا يوجد طريقه لاجعل تطبيقي يعمل (مثل المنبه) حتى ولو كان في حلة sleep
-
ما الفرق بين :
Android app
التي يكون فيها الكلاس الخاص بالنشاط يرث من كلاس Activity
Android AppCompatApp
التي يكون فيها الكلاس الخاص بالنشاط يرث من كلاس AppCompatActivity
AndroidX App
التي يكون فيها الكلاس الخاص بالنشاط يرث من كلاس AppCompatActivity
وماذا يعني كل منهم ، وما هي استخداماته ، وما هو الافظل منهم ؟لانني انا استعمل بيئة (AIDE) المصغره على الهاتف لعمل تطبيقات الاندرويد بلغة الجافا ، وهي تعمل بالنوع الاول والذي يكون فيه كلاس النشاط يرث من كلاس Activity ، وعندما ابحث عن اكواد في النت لاستعمالها في تطبيقاتي لا تعمل لانها من النوعين الآخرين .
-
قمت بعمل كلاس يرث من BroadcastReceiver ليعمل في الخفاء. كالاتي:
public class aaa extends BroadcastReceiver { Context c; @Override public void onReceive(Context context, Intent intent){ //الكود الذي نريد تنفيذة في الخفاء {
وقمت بعملية الاستدعاء او التنفيذ كالاتي:
في ملف Androi Manifest. xml<receiver android:name=".aaa" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> </intent-filter> </receiver>
اي انة سيتم التنفيذ او الاستدعاء عندنا تتغير حالة wifi .
عندما قمت بتثبيت التطبيق (قمت بازالتة من التطبيقات المصغره) وغيرت حالة wifi تمت العملية بنجاح ، ولكن :
اذا تركت الهاتف مدة ثم قمت بتغيير حالة wifi لا يتم اي عمل.
الا اذا قمت بتشغيل التطبيق مرة اخرى وهكذا بعد كل مدة.
لو تفظلتم ممكن احد يفيدنا .
-
انا عملت تطبيق يعمل في الخفاء عند تنفيذ مهمه محددة .
الكود هو كالاتي :
اولا : عملت كلاس يرث من BroadcastReceiver كالاتي :
public class bbb extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context," السلام عليكم ",1).show(); } }
حيث يتم استدعائه وتنفيذ الكود الذي بداخله عندما يتم تغيير حالة WIFI او عند تغيير حالة وضع الطائرة ويتم ذلك بوضع الاكواد التالية في ملف androidmanifest.xml :
الاستدعاء عند تغيير وضع الطائره:
<action android:name="android.intent.action.AIRPLANE_MODE"/>
الاستدعاء عند تغيير حالة WIFI :
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
وذلك كالاتي :
<receiver android:name=".aaa" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.AIRPLANE_MODE"/> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> </intent-filter> </receiver>
الذي اريده انا :
1. هل يمكن الاستدعاء يتم عند تشغيل تطبيق آخر (بدلا من الاستدعاء عند تغيير حالة wifi او وضع الطائره) مثلا عند تشغيل متصفح الذاكرة.
2. بدلا من الاستدعاء عند تغيير حالة wifi هل يمكن جعلة يستدعي فقط عندما يتم تشغيل wifi (اي انه كان wifi شغال وقمنا باطفاءة لا يتم الاستدعاء)
-
بتاريخ On 11/24/2021 at 09:14 قال شرف الدين2:
يقوم ال ActivityManager بتوفير دالة تقوم بالإفصاح عن التطبيقات التي تعمل في الهاتف , الدالة هي getRunningAppProcesses
وﻻ تأخذ تلك أي معاملات وتقوم بإرجاع list تحتوي بداخلها على العمليات التي تعمل في الهاتف على هيئة الصنف RunningAppProcessesInfo
ويمكنك تنفيذ المطلوب عبر الشفرة التالية
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses();
ومن ثم يمكنك وضع الشفرة السابقة في حلقة تكرارية غير متناهية
while(true){ ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses(); }
والتحقق من إسم العملية
while(true){ ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfo = am.getRunningAppProcesses(); for (int i = 0; i < runningAppProcessInfo.size(); i++) { if(runningAppProcessInfo.get(i).processName.equals("اسم التطبيق")) { // قم بتنفيذ عملية ما } }
قمت بتجربة هذا الكود ولكن:
1. هذا الكود لا يعمل الا عندما اقوم بتشغيل البرنامج الذي يحتوي على الكود ، انا اريد أن اقوم بتثبيته فقط ثم هو يقوم بالعمل عندما يتم تشغيل البرنامج المحدد
2. عندما قمت بتنفيذ الكود (وبدل الاختبار جعلته يعرض اسماء التطبيقات التي تعمل) ولكن لم يعرض لي الا اسم برنامجي الذي يحوي هذا الكود . طبعا بعد ان قمت بعمل دوارة منتهيه بدل while التي وضعتها كغير منتهيه مثلا جعلتها تدور عشر مرات ولكن كل ما تم عرضه هو فقط اسم برنامجي مع العلم انه كان يوجد عدة تطبيقات تعمل في الخلفية مشغل موسيقى وفيديو وعدة تطبيقات ولكن لم يعرضها
يا اخي بالمختصر اريد ان تطبيق يقوم بحذف ملفات الفيديو التي بتم عرضها في الشاشة الرئيسية لتطبيق SHAREit .
قمت بعمل التطبيق وجعلته يعمل في الخفاء حيث عملت Alarm Manager يستدعي دالة الحذف في كل دقيقة وتم العمل بنجاح ، ولكن هذة الطريقة تستهلك البطارية ، فبدلا من عمل التطبيق دائما اريده فقط ان يعمل عندما يكون تطبيق SHAREit نشط.
-
هل يمكن ان اجعل برنامجي (بلغة الجافا للاندرويد) يتحسس او يشعر بتشغيل برنامج آخر.
اي انني اريد برنامجي يقوم بتنفيذ مهمه في الخفاء عند تشغيل تطبيق محدد.
- 1
-
بتاريخ 2 ساعات قال ماجد قطوسة:
عزيزي ، تبين انه يجب عليك استخدام nvarchar للبيانات من نوع unicode - utf8 " أي اللغة العربية و ما يشبهها " و قم بإضافة حرف N قبل النص المراد البحث عنه كما يلي
select * from tableName where name=N'نص باللغة العربية'
قم بتغير أحد الحقول في جدولك الى صيغة nvarchar و قم بتجربة البحث عنه .
مشكووور اخي ماجد وجزاك الله خير
تم حل المشكلة بنجاح
- 1
-
بتاريخ 9 دقائق مضت قال ماجد قطوسة:
قم بتضمين النص المراد البحث عنه بـ % كما في المثال المدرج أدناه
SELECT * FROM 'tableName' WHERE name LIKE '%name%'
لم تنحل المشكلة
لا زالت المشكلة كما هي
-
بتاريخ 3 ساعات قال Nabil Tayeh:
عليكم السلام
ما هي لغة البرمجة؟واجهتني المشكلة وانا انشئ صفحات انترنت باستخدام تقنية asp.net C#
بتاريخ 1 ساعة قال ماجد قطوسة:تحياتي لك .
المشكلة تكمن في الترميز الخاص في قاعدة البيانات ، بحيث انه يخزن النصوص العربية على شكل رموز و هذا هو السبب الرئيسي لفشل عملية البحث ، استخدم دائما الترمز utf8_unicode_ci فبهذا الترميز تستطيع التعرف على كل اللغات (عريبة، هندية ، صينية .. الخ )هلا فيك اخي
عندما اقوم بعرض البيانات كامل فانه يتم عرضها كامل عربي او انجليزي بدون اي مشاكل
ولكن المشكلة عندما اعمل بحث عن اسم لعرض كامل بياناته
مثلا:
لدي في قاعدة البيانات في عمود الاسماء
رفيق هادي
و
saleh ahmd
--------------
فعندما اقوم بعرض الكل يتم العرض بدون اي مشاكل
ولكن عندما اريد عرض بيانات
رفيق هادي
فاقوم بكتابة رفيق هادي في textbox والضغط على زر عرض الذي ينفذ امر الاستعلام بشرط ان يكون عمود الاسماء يساوي النص الذي بداخل textbox
فانه يعرض ما مفاده ان هذا الاسم غير موجود
ولكن عندما اكتب saleh ahmd
فانه يعرض بياناته بدون مشاكل
-
قمت بانشاء قاعدة بيانات وقمت بتعبئتها بالبيانات انجليزية وعربيه ، ثم انشأت اداة text box للبحث من عمود الاسماء وتمت العملية بنجاح .
المشكلة :
انني عندما اقوم بالبحث عن اسم بالحروف العربيه يقول غير موجود
اما اذا بحثت عن اسم باللغة الانجليزية فان البحث يتم بنجاح
اريد حل لهذه المشكلة وجزاكم الله خير
-
كيف يمكنني أخذ كامل البيانات التي من صف محدد عند عرض البيانات من قاعدة البيانات في احدى ادوات عرض البيانات مثلا :
اداة list view
واداة grid view
- 1
تهيئة محرر النصوص (بيئة) VHEditor التي تعمل على هواتف الاندرويد لبرمجة تطبيقات الاندرويد باستخدام dart و flutter
في جافا سكريبت
نشر
السلام عليكم ورحمة الله وبركاتة
اريد كيفية تثبيت وتهيئة محرر النصوص (بيئة) VHEditor على هواتف الأندرويد ، وبالأخص تحميل متطلبات برمجة تطبيقات الاندرويد باستخدام لغة dart و flutter فانا اواجه صعوبة في ذلك ، فقد قمت بتثبيت VHEditor على هاتفي ولكن عندما اريد تحميل متطلبات dart و flutter من المكان المخصص لتحميلها بداخل VHEditor تظهر ادوات dart و flutter بشكل باهت ولا يمكن النقر عليها لتنزيلها ويظهر ايظا هذه الرسالة BlobNotFoundThe specified blob does not exist. RequestId:0ef85753-e01e-00e4-71e8-1ff702000000 Time:2023-01-04T03:02:23.2229769Z
الصورة توضح ذلك
-------------------
معلومات:
VHEditor
هو عبارة عن محرر نصوص نفس viscul code الذي يعمل على الكمبيوتر ، وهذا المحرر يمكن تثبيت بيانات (مترجمات) لكثير من اللغات ليتم تنفيد الاكواد بتلك اللغات.
هاتفي الذي اعمل عليه vivo v2027 ونسخة الاندرويد 10
نسخة VHEditor التي لدي هي : 1.9.0 (31)