فيما يتعلق بحفظ حقل في ملف نصي
#31
بارك الله فيك وفي اخي عبدالعزيز على التنبيه
وبعد المشكلة لازالت باقية يا اخي باسم
عندما يبدأ بالمقارنة وتكون الارقام كلها صحيحة
الرسالة الاولى تخبرك بان الرقم الاول اي رقم السجل الاول صحيح وباقي ارقام السجلات غير صحيحة
رغم انها كلها صحيحة
الرد
#32
بارك الله فيك استاد عبد العزيز معك حق
جرب هدا اخي 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; 


بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#33
(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');
الرد
#34
لا عليك يا صديقي
ما هي الرسالة التي ظهرت لديك ؟؟
وايضا اعمل
showmessage(tMnt1 ) بعد السطر الاول و انظر ما هي النتيجة التي يرجعها
كدلك showmessage(tMnt1 ) بعد السطر الثاني وما هي النتيجة التي ظهرت
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#35
(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.
الرد
#36
السلام عليكم ورحمة الله
لقد استعملت عدة محاولات في التعديل على الكود
الا انني قد يبدو لي قد وصلت الى الحل من خلال هذا التعديل والمطلوب المطالعة على التعديل وابداء رأيكم
التعديل هو بدلا من استعمال 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');
الرد
#37
و عليكم السلام
بالنسبة ل strtoint  فهو معروف اما  strtoint64  تابع مع هدا الشرح
كود :
http://www.delphibasics.co.uk/RTL.asp?Name=StrToInt64

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

بالتوفيق اخي
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#38
(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

بالتوفيق اخي
بارك الله فيكم وزادكم من الأجر والحسنات ويرحم الله والديكم آمـــــــــــــين
الرد
#39
آمين و فيك بركة اخي
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
الرد
#40
السلام عليكم
ماذا عن قراءة الملف النصي وحفظه في قاعدة البانات على شكله الاصلي قبل ان يجول الى ملف نصي
وبارك الله فيكم
الرد


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


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