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

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

بدأه markone في 12 يونيو 2011 · 13 رد · 864 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكن كتابة برنامج يقوم بأخد الأعدادات على شكل (p , -o, -t-)

ففي حال -t يأخد قيم عدية مباشرة مثل

example.exe -t 555

أرجو المساعد لأني بصراحة غير مطلع بشكل كبير على ال ++C

#2
markone كتب:

كيف يمكن كتابة برنامج يقوم بأخد الأعدادات على شكل (p , -o, -t-)

ففي حال -t يأخد قيم عدية مباشرة مثل

example.exe -t 555

أرجو المساعد لأني بصراحة غير مطلع بشكل كبير على ال ++C

يعني عن طريق الأوامر من الـ Console أثناء تنفيذ البرنامج؟

تم تعديل هذه المشاركة بواسطة ♥ حُوريّة ♥ في 12 يونيو 2011 في 17:43

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3

تماما Console هل من مثال

#4

نعم هذا مثال بسيط لإدخال مجموعات arguments اثناء تنفيذ البرنامج

#include <iostream>

int main(int argc, char *argv[])
{
	using namespace std;

	cout << "There are " << argc << " arguments:" << endl;

	// Loop through each argument and print its number and value
	for (int nArg=0; nArg < argc; nArg++)
    	cout << nArg << " " << argv[nArg] << endl;

	return 0;
}

لمزيد من المعلومات بنحاول البحت والقراءة حول

Using command-line arguments in ++C

اطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#5

كل الشكر لكن حدث معي خطا عند اضافة

argv[nArg]

الى Function

HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE,argv[nArg]);
'OpenProcess' : cannot convert parameter 3 from 'char *' to 'DWORD'
#6
markone كتب:

كل الشكر لكن حدث معي خطا عند اضافة

argv[nArg]

الى Function

HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE,argv[nArg]);
'OpenProcess' : cannot convert parameter 3 from 'char *' to 'DWORD'

اخي الكريم انت تستعمل هذا ال function بطريقه خاطئه!!!

اخر جزء منها ياخذ ال ID لل Process الذي تريد الحصول على handle جديد له

راجع هنا:

http://msdn.microsoft.com/en-us/library/ms684320(v=vs.85).aspx

تم تعديل هذه المشاركة بواسطة Ali Al-Zyoud في 14 يونيو 2011 في 10:38

#7

لا أنا متاكد من طريقة عمل ال function

كل ماعليك فعله هو ادخال ال PID الى parameter 3

لذا المطلوب هو تحويل

argv[nArg]

من النوع

'char *' to 'DWORD'

#8
markone كتب:

لا أنا متاكد من طريقة عمل ال function

كل ماعليك فعله هو ادخال ال PID الى parameter 3

لذا المطلوب هو تحويل

argv[nArg]

من النوع

'char *' to 'DWORD'

ههههه ، يبدو ان معلوماتك تتفوق على شركه مايكرو سوفت .

راجع الرابط لتستفيد !!!

#9

أوكي مافي مشكلة

كيف يمكن أخذ هذه المتغيرات و أضافتها الى أي function من دون ظهور

cannot convert from 'char *' to 'DWORD'

#10
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, (DWORD)atoi(argv[nArg]) );

تم تعديل هذه المشاركة بواسطة محمد علاء الدين في 14 يونيو 2011 في 13:16

مدونتي: C++ Tips and Tricks

#11

وشيء اخر اخي الكريم وهو ان حجم argv هو nArg ، اي ان اخر عنصر من argv هو nArg -1 ، انت هنا تدخا على مساحه غير معروفه بالنسبه لك في الذاكره وتقراء منها وهذا خطاء ثاني بالاضافه لاستخدامك الخاطيء للداله الاولى

#12

شكراا على المساعد أعود و أقول

أنا الست خبيرا في ++C

لذا لست أعلم المساحه الواجب جزها في الذاكر

بصراحة أحاول تعلم ال ++C عن طرق الأمثلة لذا من الأخطاء التي أواجها أتعلم بتفاصيل أكثر

لأني لا أعرف من أين أبدا معظم الكتب العربية ليست معبرة و الأنجليزية بحاجة لوقت طويل لقرائتها

البرمجة صلب أساسي في مختلف أنواع العلوم (كيمياء.فيزياء)

لذا أن كنت أريد الحصول على الماستر لهذه المواد (كيمياء.فيزياء) يجب أن أكون على دراية كافية بهذه اللغة

#13
markone كتب:

شكراا على المساعد أعود و أقول

أنا الست خبيرا في ++C

لذا لست أعلم المساحه الواجب جزها في الذاكر

بصراحة أحاول تعلم ال ++C عن طرق الأمثلة لذا من الأخطاء التي أواجها أتعلم بتفاصيل أكثر

لأني لا أعرف من أين أبدا معظم الكتب العربية ليست معبرة و الأنجليزية بحاجة لوقت طويل لقرائتها

البرمجة صلب أساسي في مختلف أنواع العلوم (كيمياء.فيزياء)

لذا أن كنت أريد الحصول على الماستر لهذه المواد (كيمياء.فيزياء) يجب أن أكون على دراية كافية بهذه اللغة

اخي الكريم اذا اردت فقط تعلم الاساسيات فانصحك ان تبتعد في البدايه عن الغوص فال windows api لانها عالم لانهايه له وكبيره جداً جداً.

اذا كانت مشكلتك فقط بتشغيل البرنامج واضافه command line args يمكننا ان نعطيك طرق اسهل بكثير عما تقوم به بدلاً من استخدام functions من ال API.

مثلاً استخدام ال function التالي system كافي بالنسبه لك ويسهل عليك الامور كثيراً

1
#14

عزيزي هناك طريقتان لفعل أي شيء إما أن تستخدم عجلة جاهزة أو أن تعيد اختراع العجلة :)

أنا أختار استخدام Boost.Program_options و هي مكتبة رائعة بحق, و تمكنك من التعامل مع الـ Command Line و الـ Config Files و Environment Variables بكل سهولة, فقط اشرح لها ما تريد!!!

بالمناسبة بحثت في Boost عن مكتبة تفعل ما تريده بعد قراءة سؤالك و لم يسبق لي التجربة من قبل و خرجت بالمثال التالي الذي قمت بكتابته في 10 دقائق لذلك سنركز على الـ Command Line فقط.

أولاً خذ المثال التالي و جربه:

#include <iostream>
#include <string>
#include <boost/program_options.hpp>
namespace po = boost::program_options;

int main(int argc, char* argv[])
{
	po::options_description scheme("command line options");
	scheme.add_options()
		("help", "print the command line options help page")
		("first_name", po::value<std::string>(), "set first name")
		("last_name", po::value<std::string>(), "set last name")
		("age", po::value<int>(), "set age");
	po::variables_map options;
	po::store(po::parse_command_line(argc, argv, scheme), options);
	po::notify(options);

	if(options.count("help"))
	{
		std::cout << scheme;
		return 0;
	}
	std::cout << "first_name: ";
	if(options.count("first_name"))
		std::cout << options["first_name"].as<std::string>();
	else
		std::cout << "[first name wasn't specified]";
	std::cout << std::endl;
	std::cout << "last_name: ";
	if(options.count("last_name"))
		std::cout << options["last_name"].as<std::string>();
	else
		std::cout << "[last name wasn't specified]";
	std::cout << std::endl;
	std::cout << "age: ";
	if(options.count("age"))
		std::cout << options["age"].as<int>();
	else
		std::cout << "[age wasn't specified]";
}

هذه تجاربي مع الكود:

post-89451-000695600 1308365994_thumb.pn

يمكننا أن نتشارك في فهم الكود إن كانت Boost توافق رغباتك, رغم أن قراءة سريعة للوثائق كافية لتعلم أساسيات المكتبة.

تحياتي...

المرفقات
screen.PNG

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 18 يونيو 2011 في 06:02

1

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

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

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

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

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