11-05-2020, 09:37 PM
(آخر تعديل لهذه المشاركة: 11-05-2020, 09:44 PM بواسطة larbiparadox.)
باسم الله الرحمان الرحيم
السلام عليكم
وتقبل الله صيامكم و قيامكم
![[صورة: 657834394.png]](https://www10.0zz0.com/2020/05/11/23/657834394.png)
نظرا لضيق الوقت سأتطرق إلى أهم الامور في المثال : من جهتي أحب البساطة لكي يفهمها أي شخص
ـ أول شيء حساب المفتاح لرقم الحساب ، يوجد موضوع يتحدث على ذلك من هنا
* أولا function Cle تقوم بحساب المفتاح RIP أو القديم OLD كمثال تكون الكتابة الكتالي
الشيء الثاني فتح الملف نصي نصرح به TextFile ثم نعطيه مسار الملف AssignFile(اسم الملف المصرح به, مسار الملف) و بعدها فتحه Reset
لكي نقرأ السطر نكتب ReadLn و لكتبنا مرة اخر ReadLn ينقلنا للسطر الثاني وهكذا تواليك ، عذرا أنا أختصر .
لتسهيل عملية قراء السطر كتبت الدالة التالية function LireText سرحت بها على أنها record تحتوي على الحساب و المفتاح و الاسم و المبلغ
التسريح بالسجل
الدالة لقراءة السطر
مثال الاحضار رقم الحساب من السطر إلى خلية من StringGrid1
بالنسبة لـ StringGrid1 وضعت في الاحداث في DrawCell ، محذات رقم الحساب و المبلغ إى اليمين ، ومقارنة المفتاح إذا وجد من القديم يتركه بلون أبيض و RIP باللون الاخضر و خاطئ بالاحمر
حمل المثال من المرفقات
أي إستفسار سأحاول الاجابة عنه في اقرب وقت
يرجى تصحيح كما في الصورة 21 إلى 20
![[صورة: 543325496.png]](https://www7.0zz0.com/2020/05/11/23/543325496.png)
لم الاحظ الخطأ أثناء جلب المفتاح السطر الاول .إلا فيما بعد ، يرجى تصحيحه
السلام عليكم
وتقبل الله صيامكم و قيامكم
![[صورة: 657834394.png]](https://www10.0zz0.com/2020/05/11/23/657834394.png)
نظرا لضيق الوقت سأتطرق إلى أهم الامور في المثال : من جهتي أحب البساطة لكي يفهمها أي شخص
PHP كود :
function Cle(const Type_Cle, Compte_CCP: string): string;
var
I: Byte;
begin
Result := '0';
if Type_Cle = 'RIP' then begin
for I := Length(Compte_CCP) downto 1 do
Result := IntToStr( StrToInt(Result) + StrToInt(Compte_CCP[I]) * (Length(Compte_CCP) - I + 4) );
result := IntToStr( StrToInt(Result) mod 100 );
end;
if Type_Cle = 'OLD' then begin
result :=IntToStr( 97 - ((((StrToInt(Compte_CCP) mod 97) * 3 mod 97) + 85) mod 97) );
end;
if Length(Result) = 1 then Result := '0'+ Result;
end;
ـ أول شيء حساب المفتاح لرقم الحساب ، يوجد موضوع يتحدث على ذلك من هنا
* أولا function Cle تقوم بحساب المفتاح RIP أو القديم OLD كمثال تكون الكتابة الكتالي
PHP كود :
Edit4.Text := Cle('RIP',Edit3.Text) ;
Edit5.Text := Cle('OLD',Edit3.Text) ;
الشيء الثاني فتح الملف نصي نصرح به TextFile ثم نعطيه مسار الملف AssignFile(اسم الملف المصرح به, مسار الملف) و بعدها فتحه Reset
لكي نقرأ السطر نكتب ReadLn و لكتبنا مرة اخر ReadLn ينقلنا للسطر الثاني وهكذا تواليك ، عذرا أنا أختصر .
لتسهيل عملية قراء السطر كتبت الدالة التالية function LireText سرحت بها على أنها record تحتوي على الحساب و المفتاح و الاسم و المبلغ
التسريح بالسجل
PHP كود :
type
TextRecord = record
COMPTE,CLE,NOM_PRENOM: string;
MONTANT: real;
end;
الدالة لقراءة السطر
PHP كود :
function LireText (const LigneTexte: string): TextRecord;
begin
result.COMPTE := intTOstr(strTOint( copy(LigneTexte,10,10) ));
result.CLE := copy(LigneTexte,20,2);
result.MONTANT := strTOfloat(copy(LigneTexte,22,13)) / 100;
result.NOM_PRENOM := Trim( copy(LigneTexte,35,27) );
end;
مثال الاحضار رقم الحساب من السطر إلى خلية من StringGrid1
PHP كود :
StringGrid1.Cells[1,i] := LireText(ligne).COMPTE ;
بالنسبة لـ StringGrid1 وضعت في الاحداث في DrawCell ، محذات رقم الحساب و المبلغ إى اليمين ، ومقارنة المفتاح إذا وجد من القديم يتركه بلون أبيض و RIP باللون الاخضر و خاطئ بالاحمر
حمل المثال من المرفقات
أي إستفسار سأحاول الاجابة عنه في اقرب وقت
يرجى تصحيح كما في الصورة 21 إلى 20
![[صورة: 543325496.png]](https://www7.0zz0.com/2020/05/11/23/543325496.png)
لم الاحظ الخطأ أثناء جلب المفتاح السطر الاول .إلا فيما بعد ، يرجى تصحيحه


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)