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

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

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم