الشبكة العربية لمطوري الألعاب

مبتدئ  coking مشاركة 1

السلام عليكم

عندي ثلاث TextBox أضع في الأول Time "00:01:00" مثلا
وفي الثاني "00:02:00"
وأريد أن أجري عليهما عمليات حسابية تظهر نتيجتها في الصندوق الثالث

في فيجوال بيسيك 6 كنت أستطيع عمل ذلك
text3.text =format(timevalue(text1) - timevalue(text2) , "hh:mm:ss"))
ولكني مع الفيجوال ستوديو نت لم أستطيع
وعشمي أن أجد الإجابة لديكم
ولكم جزيل الشكر

خبير مدير وسام البهنسي مشاركة 2

هذا الكود بالـ #C يقوم بوظيفة مماثلة. أعتقد أن تحويله لـ VB.NET ليس مشكلة (آسف لكن جهازي لا يحوي نسخة من VB.NET الآن).
string time1 = "12:43:20 PM";
string time2 = "2:43:20 PM";
DateTime dt1 = DateTime.Parse(time1);
DateTime dt2 = DateTime.Parse(time2);
string time3 = dt1.Subtract(dt2).ToString();


طبعاً النصوص time1 و time2 يمكنك الحصول عليها من أي مكان (صندوق نص أو أي control أخرى). نفس الوضع بالنسبة لـ time3 حيث يمكنك إسناد النص إلى أي شيء يستطيع إظهاره.

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  coking مشاركة 3

السلام عليكم

أولا لك مني جزيل الشكر على إهتمامك بالرد على سؤالي
ولكن للأسف لا أعرف شيئ عن لغة السي
لذلك لن أستطيع تحويل الكود
ملحوظة :
أنا مازلت مبتدأ بالبرمجة بالفيجوال بيسيك نت

أخيرا تقبل تحياتي وشكري العميق والسلام عليكم ورحمة الله وبركاته

خبير مشرف مؤيد مارديني مشاركة 4

الكود باليفجوال بيسيك دوت نيت و بالشكل المضغوط سيكون :

TextBox3.Text = DateTime.Parse(TextBox1.Text).Subtract(DateTime.Parse(TextBox2.Text)).ToString()


كما أرى هناك خطأ في كود فيجوال بيسيك 6 الذي وضعته لأن TimeValue تأخذ قيم String و ليس Control أو Object كما في ذلك الكود.

بالمناسبة، يمكنك كذلك استخدام الطريقة التي كنت تسخدمها في VB6 (أي باستخدام TimeValue) كما يلي :

Dim TS As TimeSpan = TimeValue(TextBox1.Text) - TimeValue(TextBox2.Text)
TextBox3.Text = TS.ToString()


و لكن ذلك غير مستحسن، لأن هذه الـFunction موروثة من VB6 لمساعدة مبرمجيها على الانتقال إلى بيئة دوت نيت الجديدة و بالتالي ستفتقدها عند التعامل مع باقي لغات دوت نيت، على عكس طريقة السيد وسام التي تستعمل Function موجود في الدوت نيت القياسي و متوافرة لبقية اللغات.

لا تتردد بطرح أي سؤال فنحن في الخدمة.

Moayad Mardini,
MSDN Forums Moderator

مبتدئ  coking مشاركة 5

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

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

وقد إستخدمت المثال الأول كما نصحت وكان هذا ما أريده فعلا

ولكم جزيل الشكر والعرفان

مبتدئ  coking مشاركة 6

السيد المحترم / مؤيد

أريد عمل جدول حضور وإنصراف موظفين
أنشأت داتا على الإسكيول وأنشأت جدول الموظفين يحتوي على حقل مفتاح أساسي وحقل الإسم وحقل موعد الحضور وحقل موعد الإنصراف وحقل الوقت الذي قضاه وبطريقة السحب والإفلات وضعت الجدول على الفورم وعدلت الثلاث حقول الخاصة بالوقت وعملت ماسك (00:00:00) وفي الكود آخر حقل وهو الوقت المنقضي كتبت الآتي:

Private Sub DURATION_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs)

        DURATION.Text = DateTime.Parse(MARK_OUT.Text).Subtract(DateTime.Parse(MARK_IN.Text)).ToString()

End Sub

كما علمتني ولكن للأسف لايعمل
رجاء مساعدتي إن أمكن ولكم جزيل الشكر

خبير مدير وسام البهنسي مشاركة 7

ما الخطأ الذي يحدث؟

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

مبتدئ  coking مشاركة 8

السيد المحترم / وسام

أشكرك لإهتمامك

الخطأ هو أن التكست بوكس (DURATION) لا يأخذ نتيجة العملية الحسابية

وشكرا مرة أخرى

خبير مشرف مؤيد مارديني مشاركة 9

أعتقد أن سبب المشكلة ليس في سطر الكود الذي كنا نناقشه بل في الإعلان عن الـSub نفسه حيث أظن أن هذا الـSub لا يتم استدعاؤه بسبب عدم وجود الـHandler الضروري لكل Sub لربطه بـEvent خاص بأي Control. جرب تعديل الكود الذي وضعته إلى :
Private Sub DURATION_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles DURATION.GotFocus
        DURATION.Text = DateTime.Parse(MARK_OUT.Text).Subtract(DateTime.Parse(MARK_IN.Text)).ToString()
End Sub

و أخبرني بالنتيجة.
(ملاحظة : سيتم تنفيذ هذا الكود عند نقل التركيز Focus إلى مربع النص DURATION)

أرجو أن يساعدك هذا!
تحياتي،

Moayad Mardini,
MSDN Forums Moderator

مبتدئ  coking مشاركة 10

مرحبا أخي مؤيد

مازال يعطيني خطأ والرسالة هي :

"Make sure your method aruments are in the right format.
When converting string to DateTime,parse the string to take the date before puting each variable into DateTime opject."

وحتى الآن لا أعرف ما المقصود
ولكني أعتقد أن المشكلة ممكن تكون أثناء إنشاء الداتا بيز .. لست أدري
أفدني أكرمك الله
والسلام عليكم ورحمة الله وبركاته