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

نسخة كاملة : فيما يتعلق بحفظ حقل في ملف نصي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3 4 5
(13-02-2016, 02:24 PM)bassem_43 كتب : [ -> ]
(12-02-2016, 06:56 PM)medreg كتب : [ -> ]اخي باسم بارك الله فيك فعلا لقد وجدت ببرنامجك انشاء الملف وفحصه
وان لم يكن هناك إحراج
فيكفيني ان تعطيني كود الإنشاء لملف النصي وكود فحص رقم الحساب
حتى اتمكن من اضافتهم لبرنامج الاجور الذي بحوذتي
لا يوجد احراج اخي والبخيل لجنهم كما يقال
بالنسبة لكود حسابcle من ccp هو سهل تفضل
كود :
procedure TForm13.btn1Click(Sender: TObject); var i,som:Integer; begin som:=0; for i:=1 to Length(edt1.Text) do som:=som+strtoint(edt1.text[i])*( (4+ Length(edt1.Text))-i); edt2.Text:=IntToStr(som); edt2.Text:=edt2.Text[Length(edt2.Text)-1]+edt2.Text[Length(edt2.Text)]; end;
تضعه في حدث الزر وتستعمل اثنان   edite  واحدة تضع في ccp والاخرى
كود :
edt2 يضهر فيها cle
بعد دلك للتاكد ان الحسابات ccp المدخلة صحيحة تقوم بمقارنة cle المدخل و المحفوظ في جدول عندك مع cle المحسوب كما هو مبين في الكود السابق
الطريقة باستخدام حلقة تمر بجميع cle  الحساباتccp   المخزنة في جدولك
بالنسبة للطلب الثاني ساحاول مساعدك فيه لانه ليس كود واحد و ربما لن تفهمه لانه مرتبط بمتغيرات كثيرة في البرنامج 
احاول مساعدك كي تكتبه بنفسك و تتعلم انا ايضا مررت بما مررت به انت لا تياس
بالتوفيق لك

بارك الله فيك يا أخي باسم وجزاك الله عنا خير الجزاء
ما هي القاعدة لحساب RIP
ومازلت انتظر باقي الطلب
و فيك بركة اخي
RIP ليس لدي فكرة عن طريق حسابه يمكنك البحث عن الالغوريثم الخاص به في غوغل وترجمه الى دالة كما فعلنا فوق.
لكن اظنك لن تحتاجه في برنامجك لانهم يقبلون فقط المفتاح CLE عند انشاء الملف النصي لانك لو ادخلت CCP و RIP كما في الشكات الجديدة فسيظهر خطا في ملف النصي للاجور ولن يقبلوه منك في مركز البريد .
الحل CCPو CLE المحسوب.
بالتوفيق
(15-02-2016, 12:23 PM)bassem_43 كتب : [ -> ]و فيك بركة اخي
RIP ليس لدي فكرة عن طريق حسابه يمكنك البحث عن الالغوريثم الخاص به في غوغل وترجمه الى دالة كما فعلنا فوق.
لكن اظنك لن تحتاجه في برنامجك لانهم يقبلون فقط المفتاح CLE عند انشاء الملف النصي لانك لو ادخلت CCP و RIP كما في الشكات الجديدة فسيظهر خطا في ملف النصي للاجور ولن يقبلوه منك في مركز البريد .
الحل CCPو CLE المحسوب.
بالتوفيق
بورك فيك
وماذا عن كود أنشاء الملف النصي
وقراءته
(15-02-2016, 06:05 PM)medreg كتب : [ -> ]
(15-02-2016, 12:23 PM)bassem_43 كتب : [ -> ]و فيك بركة اخي
RIP ليس لدي فكرة عن طريق حسابه يمكنك البحث عن الالغوريثم الخاص به في غوغل وترجمه الى دالة كما فعلنا فوق.
لكن اظنك لن تحتاجه في برنامجك لانهم يقبلون فقط المفتاح CLE عند انشاء الملف النصي لانك لو ادخلت CCP و RIP كما في الشكات الجديدة فسيظهر خطا في ملف النصي للاجور ولن يقبلوه منك في مركز البريد .
الحل CCPو CLE المحسوب.
بالتوفيق
بورك فيك
وماذا عن كود أنشاء الملف النصي
وقراءته
كود انشاء الملف النصي
PHP كود :
procedure TForm3.BitBtn3Click(Sender: TObject);
var
 
 StringList: TStringList;
 
  lig :string;
 
  i,x :integer;
 
  y:Real;

begin
  adotable1
.close;
 
 ADOQuery1.close;
 
 ADOQuery2.close;
 
 adotable1.open;
 
 ADOQuery1.open;
 
 ADOQuery2.open;
 
 ADOQuery1.active:=false;
 
 ADOQuery2.active:=false;
 
 ADOQuery1.active:=true;
 
 ADOQuery2.active:=true;

 
 StringList:= TStringList.Create;
 
 try
   edit5
.text:= ExtractNumberInString(cxDBCurrencyEdit1.text);
 
   lig:= ('*'+'00000000'+Format('%.10d',[strtoint(edit4.text)])+Format('%.2d',[strtoint(edit7.text)])+Format('%.13d',[strtoint(edit5.text)])+Format('%.7d',[strtoint(cxDBSpinEdit1.text)])+FormatFloat('00', strtofloat(edit2.Text))+edit3.Text+'              '+'0');
 
  
    StringList
.Append(lig);
  //هدا الكود لانشاء راس الملف النصي الدي يحتوي على تاريخ الراتب الشهري وعدد المستفيدين من الراتب و بعض المعلومات

 
   //**************************//
 
    و هدا الكود لانشاء بقية الملف النصي ويدرس بعض الاحتمالات الخاصة بالفاصلة 
    
//*************************//
 
      ADOTable1.DisableControls;
 
     ADOTable1.First;
 
   while not ADOTable1.Eof do
 
   begin
      Edt1
.Text:= ADOTable1.FieldByName('net_a_payer').AsString;
 
     y:= strtofloat(Edt1.Text)- (int(strtofloat(Edt1.Text)) )  ;
 
   
     
if (y)=0 then
        begin
          StringList
.Append( '*'+ '00000000' +
 
                       Format('%.10d',[strtoint(ADOTable1.FieldByName('compte').AsString )])

 
                        +
 
                       Format('%.2d',[(ADOTable1.FieldByName('clé').Asinteger)])
 
                        +
 
                       Format('%.13d',[strtoint(ExtractNumberInString((ADOTable1.FieldByName('net_a_payer').AsString)+'.'+'00'))])
 
                        +
 
                        concatblanch(ADOTable1.FieldByName('nom').AsString)
 
                          + '1'
 
                         );

 
        end
         
else
 
        begin
         
if (y>0) and (y<(0.9)) then
        begin
          StringList
.Append( '*'+ '00000000' +
 
                       Format('%.10d',[strtoint(ADOTable1.FieldByName('compte').AsString )])

 
                        +
 
                       Format('%.2d',[(ADOTable1.FieldByName('clé').Asinteger)])
 
                        +
 
                       Format('%.13d',[strtoint(ExtractNumberInString((ADOTable1.FieldByName('net_a_payer').AsString)+'0'))])
 
                        +
 
                        concatblanch(ADOTable1.FieldByName('nom').AsString)
 
                          + '1'
 
                         );

 
                  end

        else

         begin
          
// ADOTable1.FieldByName('net_a_payer').Value:=Edit6.Text;

 
     StringList.Append( '*'+ '00000000' +
 
                       Format('%.10d',[strtoint(ADOTable1.FieldByName('compte').AsString )])

 
                        +
 
                       Format('%.2d',[(ADOTable1.FieldByName('clé').Asinteger)])
 
                        +
 
                       Format('%.13d',[strtoint(ExtractNumberInString(ADOTable1.FieldByName('net_a_payer').AsString))])
 
                        +
 
                        concatblanch(ADOTable1.FieldByName('nom').AsString)
 
                          + '1'
 
                         );

 
     end;
 
     end ;
 
     //showmessage (ADOTable1.FieldByName('net_a_payer').AsString);
 
     ADOTable1.Next;
 
   end;
 
   ADOTable1.EnableControls;

 
   StringList.SaveToFile(edit1.text+'\paie'+''+'mois'+''+edit2.text+edit3.text+'.txt');
 
   showmessage ('le fichier text été criée avec succeé');
 
   StringList.Free;
 
   except
    showmessage
('ereur ');
 
 end;
end; 
طبعا الكود يمكن اختصاره او كتابته بطريقة اخرى لكن المهم انه يؤدي نفس الدور
وكما يقال كل الطرق تادي الى روما
بالتوفيق لك و ارجو ان يكون مفهوما
(15-02-2016, 08:10 PM)bassem_43 كتب : [ -> ]
(15-02-2016, 06:05 PM)medreg كتب : [ -> ]
(15-02-2016, 12:23 PM)bassem_43 كتب : [ -> ]و فيك بركة اخي
RIP ليس لدي فكرة عن طريق حسابه يمكنك البحث عن الالغوريثم الخاص به في غوغل وترجمه الى دالة كما فعلنا فوق.
لكن اظنك لن تحتاجه في برنامجك لانهم يقبلون فقط المفتاح CLE عند انشاء الملف النصي لانك لو ادخلت CCP و RIP كما في الشكات الجديدة فسيظهر خطا في ملف النصي للاجور ولن يقبلوه منك في مركز البريد .
الحل CCPو CLE المحسوب.
بالتوفيق
بورك فيك
وماذا عن كود أنشاء الملف النصي
وقراءته
كود انشاء الملف النصي
PHP كود :
procedure TForm3.BitBtn3Click(Sender: TObject);
var
 
 StringList: TStringList;
 
  lig :string;
 
  i,x :integer;
 
  y:Real;

begin
  adotable1
.close;
 
 ADOQuery1.close;
 
 ADOQuery2.close;
 
 adotable1.open;
 
 ADOQuery1.open;
 
 ADOQuery2.open;
 
 ADOQuery1.active:=false;
 
 ADOQuery2.active:=false;
 
 ADOQuery1.active:=true;
 
 ADOQuery2.active:=true;

 
 StringList:= TStringList.Create;
 
 try
   edit5
.text:= ExtractNumberInString(cxDBCurrencyEdit1.text);
 
   lig:= ('*'+'00000000'+Format('%.10d',[strtoint(edit4.text)])+Format('%.2d',[strtoint(edit7.text)])+Format('%.13d',[strtoint(edit5.text)])+Format('%.7d',[strtoint(cxDBSpinEdit1.text)])+FormatFloat('00', strtofloat(edit2.Text))+edit3.Text+'              '+'0');
 
  
    StringList
.Append(lig);
  //هدا الكود لانشاء راس الملف النصي الدي يحتوي على تاريخ الراتب الشهري وعدد المستفيدين من الراتب و بعض المعلومات

 
   //**************************//
 
    و هدا الكود لانشاء بقية الملف النصي ويدرس بعض الاحتمالات الخاصة بالفاصلة 
    
//*************************//
 
      ADOTable1.DisableControls;
 
     ADOTable1.First;
 
   while not ADOTable1.Eof do
 
   begin
      Edt1
.Text:= ADOTable1.FieldByName('net_a_payer').AsString;
 
     y:= strtofloat(Edt1.Text)- (int(strtofloat(Edt1.Text)) )  ;
 
   
     
if (y)=0 then
        begin
          StringList
.Append( '*'+ '00000000' +
 
                       Format('%.10d',[strtoint(ADOTable1.FieldByName('compte').AsString )])

 
                        +
 
                       Format('%.2d',[(ADOTable1.FieldByName('clé').Asinteger)])
 
                        +
 
                       Format('%.13d',[strtoint(ExtractNumberInString((ADOTable1.FieldByName('net_a_payer').AsString)+'.'+'00'))])
 
                        +
 
                        concatblanch(ADOTable1.FieldByName('nom').AsString)
 
                          + '1'
 
                         );

 
        end
         
else
 
        begin
         
if (y>0) and (y<(0.9)) then
        begin
          StringList
.Append( '*'+ '00000000' +
 
                       Format('%.10d',[strtoint(ADOTable1.FieldByName('compte').AsString )])

 
                        +
 
                       Format('%.2d',[(ADOTable1.FieldByName('clé').Asinteger)])
 
                        +
 
                       Format('%.13d',[strtoint(ExtractNumberInString((ADOTable1.FieldByName('net_a_payer').AsString)+'0'))])
 
                        +
 
                        concatblanch(ADOTable1.FieldByName('nom').AsString)
 
                          + '1'
 
                         );

 
                  end

        else

         begin
          
// ADOTable1.FieldByName('net_a_payer').Value:=Edit6.Text;

 
     StringList.Append( '*'+ '00000000' +
 
                       Format('%.10d',[strtoint(ADOTable1.FieldByName('compte').AsString )])

 
                        +
 
                       Format('%.2d',[(ADOTable1.FieldByName('clé').Asinteger)])
 
                        +
 
                       Format('%.13d',[strtoint(ExtractNumberInString(ADOTable1.FieldByName('net_a_payer').AsString))])
 
                        +
 
                        concatblanch(ADOTable1.FieldByName('nom').AsString)
 
                          + '1'
 
                         );

 
     end;
 
     end ;
 
     //showmessage (ADOTable1.FieldByName('net_a_payer').AsString);
 
     ADOTable1.Next;
 
   end;
 
   ADOTable1.EnableControls;

 
   StringList.SaveToFile(edit1.text+'\paie'+''+'mois'+''+edit2.text+edit3.text+'.txt');
 
   showmessage ('le fichier text été criée avec succeé');
 
   StringList.Free;
 
   except
    showmessage
('ereur ');
 
 end;
end; 
طبعا الكود يمكن اختصاره او كتابته بطريقة اخرى لكن المهم انه يؤدي نفس الدور
وكما يقال كل الطرق تادي الى روما
بالتوفيق لك و ارجو ان يكون مفهوما

بارك الله فيك اخي الا ان الدلفي لم يتعرف على concatblanch
معك حق اخي
هي دالة كتبتها تحسب عدد الفراغات الموجودة او ما شابه
سارفقها لك قريبا ليست معي الان
PHP كود :
function concatblanch( sChaine: String ): String ;
var
 
blanch,Result1:string  ;
begin
blanch 
:= '                           ' ;

Result1 := sChaine + copy(blanch ,length(sChaine)+1,27) ;

 
Result :=Result1 ;
end ; 
السلام عليكم
اليك الدالة كما وحدتك
بالتوفيق
[quote pid='37269' dateline='1455971360']
السلام عليكم
بارك الله فيك
لقد وضعت هذا الكود من اجل التحقق من صحة رقم الحساب
لكن لم يعمل بالشكل المطلوب
اين الخطأ هنا ياترى
كود :
    var i,som:Integer; n:string; h:string; begin som:=0;  with DM do  begin    TBS1.Open;    TBS1.First;    while not TBS1.Eof do    begin    n:=TBS1.Fieldvalues['Compte'];    for i:=1 to Length(n) do    som:=som+strtoint(n[i])*( (4+ Length(n))-i);    h:=IntToStr(som);    h:=h[Length(h)-1]+h[Length(h)];    if h=TBS1.FieldValues['Clef']then    begin    showMessage('Cle vrai');    end else begin    showMessage('Cle faux');    end;    TBS1.Next;    end;  end; اضافة الى ذلك هل بامكانك اعطاء كود لقراءة هذاالملف النصي الذي انشأته
في قاعدة بيانات اي فتحه رواسطة برنامج بسبه البرنامج المرفق
بالتوفيق
[/quote]
(22-02-2016, 07:04 PM)medreg كتب : [ -> ][quote pid='37269' dateline='1455971360']
السلام عليكم
بارك الله فيك
لقد وضعت هذا الكود من اجل التحقق من صحة رقم الحساب
لكن لم يعمل بالشكل المطلوب
اين الخطأ هنا ياترى
كود :
    var i,som:Integer; n:string; h:string; begin som:=0;  with DM do  begin    TBS1.Open;    TBS1.First;    while not TBS1.Eof do    begin    n:=TBS1.Fieldvalues['Compte'];    for i:=1 to Length(n) do    som:=som+strtoint(n[i])*( (4+ Length(n))-i);    h:=IntToStr(som);    h:=h[Length(h)-1]+h[Length(h)];    if h=TBS1.FieldValues['Clef']then    begin    showMessage('Cle vrai');    end else begin    showMessage('Cle faux');    end;    TBS1.Next;    end;  end; اضافة الى ذلك هل بامكانك اعطاء كود لقراءة هذاالملف النصي الذي انشأته
في قاعدة بيانات اي فتحه رواسطة برنامج بسبه البرنامج المرفق
بالتوفيق

[/quote]
السلام عليكم
اولا مادا تعني ب  with DM do  
ثانيا ضع رسالة الخطا التي تظهر لك
ثالثا تاكد من نوع الحقل CLEF ان كان integer  فغيرالكود الى
PHP كود :
if h=inttostr(TBS1.FieldValues['Clef']then 
سئالك الاخير اتقصد طريقة الكتابة في قاعدة بيانات من ملف نصي ؟؟

عفوا هنالك خطا
نسيت اغلاق القوس
PHP كود :
if h=inttostr(TBS1.FieldValues['Clef'])then 

كدلك
*سؤالك Big Grin
ملاحظة للاخ bassem_43 و medreg والكل عامة
رجاء عتد كتابة رد عدم اقتباس المشاركة كليا حتى يسهل متابعة الموضوع
يكفي اقتباس فقط الجزء المهم من الرد، سطرا او اثنين على الاكثر
او الاكتفاء بالضغط على الزر "رد جديد" دون اقتباس
وشكرا على حسن الفهم
الصفحات : 1 2 3 4 5