المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(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 والاخرى
بعد دلك للتاكد ان الحسابات ccp المدخلة صحيحة تقوم بمقارنة cle المدخل و المحفوظ في جدول عندك مع cle المحسوب كما هو مبين في الكود السابق
الطريقة باستخدام حلقة تمر بجميع cle الحساباتccp المخزنة في جدولك
بالنسبة للطلب الثاني ساحاول مساعدك فيه لانه ليس كود واحد و ربما لن تفهمه لانه مرتبط بمتغيرات كثيرة في البرنامج
احاول مساعدك كي تكتبه بنفسك و تتعلم انا ايضا مررت بما مررت به انت لا تياس
بالتوفيق لك
بارك الله فيك يا أخي باسم وجزاك الله عنا خير الجزاء
ما هي القاعدة لحساب RIP
ومازلت انتظر باقي الطلب
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
و فيك بركة اخي
RIP ليس لدي فكرة عن طريق حسابه يمكنك البحث عن الالغوريثم الخاص به في غوغل وترجمه الى دالة كما فعلنا فوق.
لكن اظنك لن تحتاجه في برنامجك لانهم يقبلون فقط المفتاح CLE عند انشاء الملف النصي لانك لو ادخلت CCP و RIP كما في الشكات الجديدة فسيظهر خطا في ملف النصي للاجور ولن يقبلوه منك في مركز البريد .
الحل CCPو CLE المحسوب.
بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(15-02-2016, 12:23 PM)bassem_43 كتب : و فيك بركة اخي
RIP ليس لدي فكرة عن طريق حسابه يمكنك البحث عن الالغوريثم الخاص به في غوغل وترجمه الى دالة كما فعلنا فوق.
لكن اظنك لن تحتاجه في برنامجك لانهم يقبلون فقط المفتاح CLE عند انشاء الملف النصي لانك لو ادخلت CCP و RIP كما في الشكات الجديدة فسيظهر خطا في ملف النصي للاجور ولن يقبلوه منك في مركز البريد .
الحل CCPو CLE المحسوب.
بالتوفيق بورك فيك
وماذا عن كود أنشاء الملف النصي
وقراءته
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
(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;
طبعا الكود يمكن اختصاره او كتابته بطريقة اخرى لكن المهم انه يؤدي نفس الدور
وكما يقال كل الطرق تادي الى روما
بالتوفيق لك و ارجو ان يكون مفهوما
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
(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
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
معك حق اخي
هي دالة كتبتها تحسب عدد الفراغات الموجودة او ما شابه
سارفقها لك قريبا ليست معي الان
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
PHP كود : function concatblanch( sChaine: String ): String ; var blanch,Result1:string ; begin blanch := ' ' ;
Result1 := sChaine + copy(blanch ,length(sChaine)+1,27) ;
Result :=Result1 ; end ;
السلام عليكم
اليك الدالة كما وحدتك
بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 501
المواضيع 136
:
: 11
الإنتساب : Feb 2008
[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]
المشاركات : 543
المواضيع 34
:
: 463
الإنتساب : Apr 2013
23-02-2016, 09:23 AM
(آخر تعديل لهذه المشاركة: 23-02-2016, 09:27 AM بواسطة bassem_43.)
(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
كدلك
*سؤالك
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
23-02-2016, 11:01 AM
(آخر تعديل لهذه المشاركة: 23-02-2016, 11:35 AM بواسطة محمد عبد العزيز.)
ملاحظة للاخ bassem_43 و medreg والكل عامة
رجاء عتد كتابة رد عدم اقتباس المشاركة كليا حتى يسهل متابعة الموضوع
يكفي اقتباس فقط الجزء المهم من الرد، سطرا او اثنين على الاكثر
او الاكتفاء بالضغط على الزر "رد جديد" دون اقتباس
وشكرا على حسن الفهم
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
|