delphi4arab منتديات دلفي للعرب
اين الخطأ في هذا الكود - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : اين الخطأ في هذا الكود (/showthread.php?tid=9242)



اين الخطأ في هذا الكود - medreg - 17-03-2018

السلام عليكم ورحمة الله تعالى وبركاته
وضعت كود لكن لايعمل
هل هناط خطأ لم انتبه اليه مع العلم انني حاولت عدة مرات لكن للاسف لا يعمل
كود :
procedure TForm1.Button1Click(Sender: TObject); Var tPnt,Tx01,Tx02,Tx03,Tx04,Tx05,Tx06:real; begin  With DM do  begin    Table1.Open;    Tx01:=Table1Tx_01.Value;    Tx02:=Table1Tx_02.Value;    Tx03:=Table1Tx_03.Value;    Tx04:=Table1Tx_04.Value;    Tx05:=Table1Tx_05.Value;    Tx06:=Table1Tx_06.Value;    Table2.first;    while Not Table2.eof do    begin    tPnt:=Table2.fieldValues['Pnt_Prm'];      Table2.Edit;      If (tPnt<=36.10)Or(tPnt>=40.00) then Table2.FieldValues['TX_Prm']:=Tx01;      If (tPnt<=32.10)Or(tPnt>=36.00) then Table2.FieldValues['TX_Prm']:=Tx02;      If (tPnt<=28.10)Or(tPnt>=32.00) then Table2.FieldValues['TX_Prm']:=Tx03;      If (tPnt<=24.10)Or(tPnt>=28.00) then Table2.FieldValues['TX_Prm']:=Tx04;      If (tPnt<=20.10)Or(tPnt>=24.00) then Table2.FieldValues['TX_Prm']:=Tx05;      If (tPnt=0.00)Or(tPnt>=20.00) then Table2.FieldValues['TX_Prm']:=Tx06;    Table2.Next;    end;  end; end; كما انني استعملت هذا الكود الثاني لكن لم يقبل الفاصلة case tPnt of 36.10..40.00 : table2.fieldvalues['TX_Prm']:=Tx01; 32.10..36.00 : table2.fieldvalues['TX_Prm']:=Tx02;
18.10..32.00 : table2.fieldvalues['TX_Prm']:=Tx03;
end;


RE: اين الخطأ في هذا الكود - S.FATEH - 17-03-2018

السلام عليكم
توخ الحذر عند المقارنة بين الأعداد ذات الفاصلة الذي تراه ليس هو الموجود في الذاكرة قد ترى 30.00 لكن قد يكون في الحقيقة 30.00000001
لذلك حاول المقارنة باستخدام الدوال التي يوفرها دلفي مثل CompareValue
http://www.delphibasics.co.uk/RTL.asp?Name=CompareValue


RE: اين الخطأ في هذا الكود - medreg - 17-03-2018

(17-03-2018, 04:23 PM)S.FATEH كتب : السلام عليكم
توخ الحذر عند المقارنة بين الأعداد ذات الفاصلة الذي تراه ليس هو الموجود في الذاكرة قد ترى 30.00 لكن قد يكون في الحقيقة 30.00000001
لذلك حاول المقارنة باستخدام الدوال التي يوفرها دلفي مثل CompareValue
http://www.delphibasics.co.uk/RTL.asp?Name=CompareValue

بارك الله فيك اخي على هذا التنبيه
إلا انني لم افهم شيئ
لو تكرمت وقمت بالتعديل على الكود بارك الله فيك


RE: اين الخطأ في هذا الكود - S.FATEH - 17-03-2018

السلام عليكم
مثال لسطر المقارنات الاول
PHP كود :
uses System.Math, System.Types; 

PHP كود :
case CompareValue(tPnt, 36.10, epsilon) of
      LessThanValue
:Table2.FieldValues['TX_Prm']:=Tx01;
 
     EqualsValue:Table2.FieldValues['TX_Prm']:=Tx01;
 
    end;

 
    case CompareValue(tPnt, 40.00, epsilon) of
      GreaterThanValue
:Table2.FieldValues['TX_Prm']:=Tx01;
 
     EqualsValue:Table2.FieldValues['TX_Prm']:=Tx01;
 
    end; 

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


RE: اين الخطأ في هذا الكود - medreg - 17-03-2018

بارك الله فيكم اخي
لكن الكود ياخذ قيمة واحدة فقط
والمفروض انه يأخذ القيمة حسب الشرط
اذا كان tpnt يساوي القيمة ما بين 15.10 و 20.00 إذًا
table2.tx_prm.value:= tx01
اذا كان tpnt يساوي القيمة ما بين 12.10 و 15.00 إذًا
table2.tx_prm.value:= tx02
اذا كان tpnt يساوي القيمة ما بين 08.10 و 12.00 إذًا
table2.tx_prm.value:= tx03
كما هو مبين في الصورة

[attachment=3709]