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

نسخة كاملة : فيما يتعلق بحفظ حقل في ملف نصي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5
بارك الله فيك وفي اخي عبدالعزيز على التنبيه
وبعد المشكلة لازالت باقية يا اخي باسم
عندما يبدأ بالمقارنة وتكون الارقام كلها صحيحة
الرسالة الاولى تخبرك بان الرقم الاول اي رقم السجل الاول صحيح وباقي ارقام السجلات غير صحيحة
رغم انها كلها صحيحة
بارك الله فيك استاد عبد العزيز معك حق
جرب هدا اخي medreg
حاول اظافة edit.text تضع فيها قيم حقول جدولك لكي تقارنها مثال
PHP كود :
try
 
  //**********************************//
  
      ADOTable1
.First;
 
   while not ADOTable1.Eof do
 
   begin

      edit6
.text:=ADOTable1.FieldByName('compte').AsString;
 
     edit7.text:=ADOTable1.FieldByName('clé').AsString  ;
 
     edit9.text:= ADOTable1.FieldByName('numero').AsString ;
 
     edit10.text:= ADOTable1.FieldByName('nom').AsString;
 
     edit11.text:= ADOTable1.FieldByName('net_a_payer').AsString;
 
    
      som
:=0;
 
     for i:=1 to Length(edit6.Text) do
 
     begin
      som
:=som+strtoint(edit6.text[i])*( (4+ Length(edit6.Text))-i);

 
     edit8.Text:=IntToStr(som);
 
     edit8.Text:= edit8.Text[Length(edit8.Text)-1]+edit8.Text[Length(edit8.Text)];

 
    end;

 
     edit13.Text:= Format('%.2d',[strtoint(edit8.text)]);
 
    //edit13.text يحتوي الان على cle المحسوب و edit7.text يحتوي على cle المدخل الى الجدول نقوم بالمقارنة
//adotable3 هو جدول نضع فيها الحسابات الخاطئة لطباعتها فيما بعد و تصحيحها 

 
    if edit7.text <> edit13.text then
     Begin

    
// هده الحلقة من اجل عدم تكرار ادخال الحسابات الى جدول الحسابات الخاطئة  
 
         adotable3.Open ;
 
         If  (adotable3.Locate ('Nom et Prénom' , edit10.text , [Locaseinsensitive] ) )and(adotable3.Locate ('Compte CCP',edit6.text , [Locaseinsensitive] ) ) Then
                          begin

                            
// Showmessage ( ' Ce person existe déjà, SVP introduire un autre person ' ) ;

 
                            Label11.Visible:=False  ;

 
                         // Abort

 
                       // End

 
        
 end
     
//***********************************// // في حالة كان الحساب خاطئ وغير موجود في جدول الحسابات الخاطئة نقوم باظافته
else
      begin
      
       ADOTable3
.close;
 
      ADOTable3.open;
  
       ADOTable3
.edit  ;
 
      ADOTable3.append;
 
      ADOTable3.FieldByName('numero').AsString:=edit9.text ;
 
      ADOTable3.FieldByName('Nom et Prénom').AsString:= edit10.text;
 
      ADOTable3.FieldByName('Compte CCP').AsString:= edit6.text;
 
      ADOTable3.FieldByName('net_a_payer').AsString:=edit11.text ;
 
      ADOTable3.FieldByName('Clé').AsString:= edit7.text;
 
    

        adotable3
.post;
 
    
      end
;
 
     end;
 
   
          ADOTable1
.Next;
 
        end;
 
     
     except
    showmessage
('error');
 
    end; 


بالتوفيق
(26-02-2016, 10:07 AM)bassem_43اعتذر للغياب المفاجئابن الخطأ في هذا الكودالكود يعمل بشكل جيد الا انه اذا تجاوذ المبلغ 9 ارقام يعطيني خطأبمعنىإذا كان المبلغ يساوي 9.250.300,21 يعمل بشكل جيدوادا كان المبلغ يساوي 92.503.002,12 لايعمل بشكل جيدهذا هو الكود كتب : [ -> ]
كود :
tMnt1    := ExtractNumberInString(formatfloat('0.00',TB1.fieldvalues['MT_NET'])); tMtn1 := format('%.13d',[strtoint(tMnt1)]); Memo1.Add('*00000000'+format('%.10d',[strtoint(TB1.FieldValues['Cpte_Tr'])])+ TB1.FieldValues['Cle']+tMtn1+ format('%.7d',[strtoint(TB1.FieldValues['Effectif'])])+ TB1.FieldValues['MOIS']+TB1.FieldValues['ANNEE']+'              '+'0');
لا عليك يا صديقي
ما هي الرسالة التي ظهرت لديك ؟؟
وايضا اعمل
showmessage(tMnt1 ) بعد السطر الاول و انظر ما هي النتيجة التي يرجعها
كدلك showmessage(tMnt1 ) بعد السطر الثاني وما هي النتيجة التي ظهرت
(21-03-2016, 09:43 PM)bassem_43 كتب : [ -> ]لا عليك يا صديقي
ما هي الرسالة التي ظهرت لديك ؟؟
وايضا اعمل
showmessage(tMnt1 ) بعد السطر الاول و انظر ما هي النتيجة التي يرجعها
كدلك showmessage(tMnt1 ) بعد السطر الثاني وما هي النتيجة التي ظهرت

بارك الله فيك
في الرسالة الاولى التي وضعتها بعد السطر الاول تشير الى ان المبلغ تحول عالى ما اظن لآنه هذا هو المبلغ
'2524164701'
الرسالة الثانية التي وضعتها بعد السطر الثاني تعطيني خطأ المتمثل فيما يلي
Le Projet Paye_Pers.exe a provoqué une classe d'exception EConvertError avec le message "2524164701' 
n'est pas une valeur entière correcte'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
السلام عليكم ورحمة الله
لقد استعملت عدة محاولات في التعديل على الكود
الا انني قد يبدو لي قد وصلت الى الحل من خلال هذا التعديل والمطلوب المطالعة على التعديل وابداء رأيكم
التعديل هو بدلا من استعمال strtoint استعملت strtoint64 كما اطلب منكم توضيح الفرق بين strtoint و strtoint64  واين تستعمل
وهل استعمالها بدلا من strtoint عادي حتى في التحويلات الصغيرة ام لا؟
كود :
     tMtn1 := format('%.13d',[strtoInt64(ExtractNumberInString(formatfloat('0.00',TBS2.fieldvalues['MT_NET'])))]);      showmessage(tMtn1 );      Memo1.Add('*00000000'+format('%.10d',[strtoint(TBS2.FieldValues['Cpte_Tr'])])+       TBS2.FieldValues['Cle']+tMtn1+       format('%.7d',[strtoint(TBS2.FieldValues['Effectif'])])+       TBS2.FieldValues['MOIS']+concatblanch(TBS2.FieldValues['ANNEE'])+'0');
و عليكم السلام
بالنسبة ل strtoint  فهو معروف اما  strtoint64  تابع مع هدا الشرح
كود :
http://www.delphibasics.co.uk/RTL.asp?Name=StrToInt64

و هدا
كود :
http://www.freepascal.org/docs-html/rtl/sysutils/strtoint64.html

بالتوفيق اخي
(22-03-2016, 01:43 PM)bassem_43 كتب : [ -> ]و عليكم السلام
بالنسبة ل strtoint  فهو معروف اما  strtoint64  تابع مع هدا الشرح
كود :
http://www.delphibasics.co.uk/RTL.asp?Name=StrToInt64

و هدا
كود :
http://www.freepascal.org/docs-html/rtl/sysutils/strtoint64.html

بالتوفيق اخي
بارك الله فيكم وزادكم من الأجر والحسنات ويرحم الله والديكم آمـــــــــــــين
آمين و فيك بركة اخي
السلام عليكم
ماذا عن قراءة الملف النصي وحفظه في قاعدة البانات على شكله الاصلي قبل ان يجول الى ملف نصي
وبارك الله فيكم
الصفحات : 1 2 3 4 5