delphi4arab منتديات دلفي للعرب

نسخة كاملة : اين الخطأ في هذا الكود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله تعالى وبركاته
وضعت كود لكن لايعمل
هل هناط خطأ لم انتبه اليه مع العلم انني حاولت عدة مرات لكن للاسف لا يعمل
كود :
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;
السلام عليكم
توخ الحذر عند المقارنة بين الأعداد ذات الفاصلة الذي تراه ليس هو الموجود في الذاكرة قد ترى 30.00 لكن قد يكون في الحقيقة 30.00000001
لذلك حاول المقارنة باستخدام الدوال التي يوفرها دلفي مثل CompareValue
http://www.delphibasics.co.uk/RTL.asp?Name=CompareValue
(17-03-2018, 04:23 PM)S.FATEH كتب : [ -> ]السلام عليكم
توخ الحذر عند المقارنة بين الأعداد ذات الفاصلة الذي تراه ليس هو الموجود في الذاكرة قد ترى 30.00 لكن قد يكون في الحقيقة 30.00000001
لذلك حاول المقارنة باستخدام الدوال التي يوفرها دلفي مثل CompareValue
http://www.delphibasics.co.uk/RTL.asp?Name=CompareValue

بارك الله فيك اخي على هذا التنبيه
إلا انني لم افهم شيئ
لو تكرمت وقمت بالتعديل على الكود بارك الله فيك
السلام عليكم
مثال لسطر المقارنات الاول
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; 

كرر العملية لجميع الاسطر
يبقى فقط قد يكون الخطأ شيئ اخر على كل حال جرب
بارك الله فيكم اخي
لكن الكود ياخذ قيمة واحدة فقط
والمفروض انه يأخذ القيمة حسب الشرط
اذا كان 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]