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

الفيجوال بيسيك لا يتعرف على العمليات المنطقية :)

مغلق
بدأه Mohammed-Saeed في 3 أبريل 2005 · 4 رد · 1,071 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

بعد احر التحيات ...

لقد واجهني امر غريب جدا ، يخالف منطق البرمجة ، حيث ان معامل جمع النصوص(&) لا يعمل !!!

و المثال التالي خير دليل :

لاحظ ان حرف Z لا يظهر في الرسالة ،، فهل يتعلق هذا بسرعة اجراء الحاسوب للعمليات ؟؟؟ ام ماذا ، و ما هو الحل لتلافي هذه المشكلة ؟

Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Function ReadStr(ByVal Key As String, Optional ByVal Before$, Optional ByVal After$) As String
mStr$ = (Before$ & Readini("String", Key) & After$)
ReadStr = mStr$
End Function

Public Function Readini(ByVal FormName As String, ByVal Key As String, Optional ByVal Default = "") As String
FileName$ = App.Path & "\Lng-English.ini"
Dim retval As Long, xt As String
xt = Space(256)
retval = GetPrivateProfileString(FormName, Key, Default, xt, 256, FileName)
Readini = xt
End Function

Private Sub Form_Load()
MsgBox ReadStr("Page", " A ", " Z ")
End Sub

فهل من تفسير لهذه الظاهرة ؟؟؟

VB.zip

تم تعديل هذه المشاركة بواسطة Mohammed-Saeed في 3 أبريل 2005 في 20:45

#3

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

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

اخي الحبيب لم يتخلى الفيجوال بيسك عن المنقطية حتى في المثال الذي طرحته انت عزيزي غير انه ينبغي فهم الذي يحدث من وراء الكواليس ... وقبل ذلك جرب هذا المثال :

MsgBox "Rgheed" & Chr(0) & "Al-Taib"
او
MsgBox "Rgheed" & vbNullChar & "Al-Taib"

في المثالين السابقين سوف يفاجئك الفيجوال بيسك بانه يظهر الكلمة Rgheed فقط ! و السبب في اننا و ضعناها خلفها مباشرة حرف خالي vbNullChar او (Chr(0 فهما متساويتان ومعناهما فراغ ..

و هذا الفراغ من النوع الذي ليس له تمثيل يمكن ان يعرض او يطبع سواءاً على الشاشة او على الطابعة ... و هو ذاته الحرف المستخدم في لغات الـ ++C لتمثيل نهاية النصوص و كذلك الـ MsgBox يفترض ان النص انتهى بمجرد عثوره على هذا الرقم.

و الان في مثال قمت باستخدام الدالة Readini لقراءة القيمة من الملف اعتمادا على دالة الـ API المسماه GetPrivateProfileString و مشكلتك في كون الدالة تعيد لك فراغ Null بعد القيمة التي تقوم بقراءتها وينبغي عليك حينها ان تتخلص من هذا الفراغ حتى لا تنتهي السلسلة النصية و يختفي الحرف Z ... و لهذا فلا يلزمك سوى تعيديل الشفرة لتصبح هكذا :

Public Function Readini(ByVal FormName As String, ByVal Key As String, Optional ByVal Default = "") As String
    FileName$ = App.Path & "\Lng-English.ini"
    Dim retval As Long, xt As String
    xt = Space(256)
    retval = GetPrivateProfileString(FormName, Key, Default, xt, 256, FileName)
    Readini = Left(xt, retval)
End Function

او

Public Function Readini(ByVal FormName As String, ByVal Key As String, Optional ByVal Default = "") As String
    FileName$ = App.Path & "\Lng-English.ini"
    Dim retval As Long, xt As String
    xt = Space(256)
    retval = GetPrivateProfileString(FormName, Key, Default, xt, 256, FileName)
    Readini = Left(xt, Instr(1,retVal,vbNullChar)-1)
End Function

على العموم في الملف المرفق تجد مثالاً كاملا بإذن الله تعالى ...

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

اخيراً اقول افادك الله بما سبق سبحانه و السلام عليكم و رحمة اله وبركاته

YourSample.zip

تم تعديل هذه المشاركة بواسطة رغيد الطيب في 4 أبريل 2005 في 05:47

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#4

لم الاحظ الا ان Z سوى حرف تريد ان يظهر في الرساله بعد A.

وهذا هو الحل:

MsgBox ReadStr("Page", " A " & " Z ")

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

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

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

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

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

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

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