الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكنني احضار ملف ورد على الدلفي

بدأه sabrina_1603 في 11 سبتمبر 2009 · 9 رد · 2,158 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

اريد ان اكتب برنامج على سطح الدلفي يقوم بعملية حسابية لوجود المفتاح ؟

الملف من الورد يحوي على رقم (4802550011 ) لكن ينقصه المفتاح الذي نحصل عليه بعملية حسابية بيسيطة بين الأرقام السابقة بعملية جمع وطرح وضرب المهم السؤال كيف استضيف هذا الملف على الدلفي في الفورم ،اما ثانيا ما هو الكود الذي استطيع من خلال الانتقال من الرقم الأول في السطر الأول الى السطر الثاني يعني الرقم الموالي ،علما ان البرنامج يكون فيه قفل الرقم و المفتاح و الحساب

(button )

اذا غامرت في شرف مروم فلا تقنع ما دون النجوم

#2

السلام عليكم...

الأخ/الأخت sabrina_1603...

السؤال غير واضح (على الأقل بالنسبة لي أنا). و هذا هو سبب وجود 45 قراءة للموضوع دون وجود أي إجابة.

الرجاء إعادة صياغة المطلوب بشكل أوضح.

و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكرا على اهتمامك جزاك الله عنا كل خير ، ساحاول طرح مشكلتي من جديد

انا اريد ان انشاء برنامج بدلفي يتم من خلاله حساب الكود لعدة شيفرات مثلا ،4802550011-63 هذا يعتبر شيفرة من عدة شيفرات موجودة بملف ورد يعني انه يحوي على عدة ارقام وهو في الحقيقة يحتوي على 10 ارقام يعني 4802550011 والرقم 63 نحسبه من خلال عملية حسابية بسيطة بين الأعداد الفردية والزوجية وهذه صيغة الحساب 4+0+5+0+1=10، -حسنا المجموع هو 10 ، 8+2+5+0+1=16 المجموع هو 16 حسنا تكون صيغة المعادلة للحصول على 63 كالتالي :

99-(p*2)+impair=cle

(10*2)+16=36,99-36=63 cle

سؤالي هو كيف استطيع كتابة العملية الحسابية في الدلفي وكيف انتقل من السطر الأول يعني الرقم الأول احسب الكود ومن ثم الرقم الثاني ؟

ينتقل عشوائيا

كيف اظهر الملف على سطح الفورم في الدلفي يعني صفحة الورد التي به الشيفرات وفي نفس الوقت اباشر العملية الحسابية ؟

لكي لا اكون كسولة في نظركم هذه محاولة وان شاء الله اكون على صح

نستضيف un label,un memo,un lable,button ,un opendialog,un button (calcule ) , edit1 (affichage le numéro) ,aff cle

type

tftexte=class

memo:tmemo;

momf:tlabel;

od:topendialog;

lignes;tlabel;

lire:tbutton;

procedure lireclick(sender:tobject);

private

{private declaration}

public

{public declaration}

end;

var ftexte:tftexte;

implementation

procedure tftexte.lireclick(sender:tobject);

var

f textfile;

ligne:string;

x:integer {le numero}

begin

for x:1 to 10 do ;

writeln ('donnez vos nombres paire ou impaire ');

read ('x');

if(x ext paire )then begin;

......................................هنا توقفت

حتى انني لست اعلم هل انا صح ام خطرأ :blush: اتمنى ان لا تسخروا منى ان كنت ازخلط لكن حاولت على كل حال

لهذا ارجوا المساعدة والتصحيح

comment déclaré la table (fichier texte) et calculé les numéro paire est impaire

ان شاء الله اكون شرحت جيدا مشكلتي انتظر ردكم وتفاعلكم معي بفارغ الصبر

اذا غامرت في شرف مروم فلا تقنع ما دون النجوم

#4

لم افهم سؤالك جيدا

لذا سأعيد ما فهمته منه

انت تحاولي قراءة قيم من عشرة مراتب من ملف نصي txt ( ليس شرطا أن يكون ملف Ms Word) ، هذه القيم مكتوبة كل قيمة في سطر لوحدها

الجزء الثاني هو ما ذكرته من طريقة لحساب المفتاح لهذه القيم

إختلط علي الأمر عندما قرأت الكود الذي وضعته، وكذلك العبارة التالية

اقتباس
comment déclaré la table (fichier texte) et calculé les numéro paire est impaire

والتي تعني كيف يمكن تعريف جدول ( ملف نصي ) وحساب الأعداد الفردية والزوجية

من دواعي فلسفة السخط في الطبائع الخيرة أن يكون الإنسان مجبولا على الإحساس بالواجب والشعور باللياقة . ذلك أن الذي يجبل على هذا الخلق يرى الأشياء كما هي كائنة ثم يراها كما يجب أن تكون فلا يلبث أن يجد في كل شيء نقصا ولا يلبث أن يجد في كل شيء باعثا للأسى و الأسف وداعيا إلى النقد والمذمة . فيكون غضبه أكثر من رضاه وحزنه أعم من فرحه ، ويكون إلى التنفير والقول بالتشاؤم أميل منه إلى التبشير والقول بالتفاؤل - العقاد

#5

السلام عليكم...

شكراً للأخ djaballah75 على زيادة التوضيح لأني لا أفهم الفرنسية! كنت فعلاً أنتظر أحد الإخوة الجزائريين لتوضيح المسألة أكثر.

إذا كان الأمر يتعلق بملف نصي (و ليس ملف وورد Word) فأعتقد أن الأمر بسيط:

نضع على النافذة المكون Memo (من صفحة المكونات Standard).

نضيف المكون OpenDialog من صفحة Dialogs.

نضيف زر (Button) لفتح الملف، و يكون الكود فيه قريباً من التالي:

  1.  
  2. if OpenDialog1.Execute then
  3. Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
  4.  

حيث يتم عرض محتويات الملف النصي في Memo1.

نضيف زر للمعالجة، و يكون الكود مشابهاً للتالي (كيفية قراءة الأسطر واحداً واحداً):

  1.  
  2. var
  3. Idx: Integer;
  4. NumStr: string;
  5. begin
  6. for Idx := 0 to Memo1.Lines.Count -1 do begin
  7. NumStr := Memo1.Lines[Idx];
  8. //
  9. // NumStr نقوم هنا بعمليات المعالجة باستخدام
  10. //
  11. end;
  12.  

ملاحظة: الوظيفة LoadFromFile لا تنفع مع ملفات وورد (Word) لأن تلك الملفات تحتوي على الكثير من رموز التنسيق مدمجة داخل النص نفسه.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#6

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكرا على تفاعلكم معي جزاكم الله عني كل الخير ، اخي جاب الله فهمك صحيح ، اما بالنسبة للعبارة فهي ما ترجمته التي تعني كيف يمكن تعريف جدول ( ملف نصي ) وحساب الأعداد الفردية والزوجية لكل سطر الذي به العشرة الأرقام كما بينة سابقا في حساب مجموع الأعداد الفردية *2 المجموع نضيفه + للأعداد الزوجية ثم المجموع ننقصه من 99 ، يمكنك اخي الفاضل ان تجربها وتحصل بذلك على الرقم 63 مثلما هو مطروح في المثال وهذا نسميه الكود ، يعني عندما اظهر الملف النص على سطح الدلفي مثلما تكرم اخي ناجي انجاك الله من هول يوم القيامة ،انتقل بعدها الى العملية الحسابية التي وضعت القفل

label1(le numéro اظهار الرقم )

label2(clé اظهار النتيجة الكود)

buton (calcule احسب)

+memo

طبعا التي تظهر به الملف الذي به سلسلة الأرقام

la liste

يعني ينتقل الرقم من الملف على الخانة المخصصة لكتابة الرقم ثم اضغط على قفل الحساب يحسب لي او يعطيني الكود و بالتالي يتغير في الملف النصي بعد ذلك حاملا معه الكود ليصبح عدد الأرقام 12

شكرا اخي ناجي على جوابك وهذا ما كنت ابحث عنه ساطبق المحاولة وان شاء الله انسخ محاولتي على الموقع لإيضاح الفكرة

تمنى ان تفهموني ، الله يجعلها في ميزان حسناتكم

اذا غامرت في شرف مروم فلا تقنع ما دون النجوم

#7
var
 nOdd, nDoubles: Integer;
 r: Integer;
 i: Integer;
begin
 nOdd:= 0;
 nDoubles:= 0;

 for i:=0 to Memo1.Lines.Count-1 do
   if not odd(i) then nOdd := nOdd+ StrToInt(Memo1.Lines)
			 else nDoubles:= nDoubles+ StrToInt(Memo1.Lines);

 r:= 99 -((nOdd * 2)+ nDoubles);
 Memo1.Lines.Add(IntToStr(r));
end;

تختبر التعليمة odd فيما إذا كان العدد فرديا أو زوجيا وهنا تعاكس مثالك لأن أسطر ال Memo تبدأ من الرقم صفر وهو ما تعتبره أنت الرقم واحد

أما إذا أردت حسابها من رقم كامل غير متعلق بأسطر يعني هكذا 4802550011 فالمسألة تختلف قليلا وهو وتصبح كالتالي

var
 s: String;
 nOdd, nDoubles: Integer;
 r: Integer;
 i: Integer;
begin
 nOdd:= 0;
 nDoubles:= 0;

 s:= Edit1.Text;
 for i:=1 to (Length(s)) do
   if odd(i) then nOdd := nOdd+ StrToInt(s)
			 else nDoubles:= nDoubles+ StrToInt(s);

 ShowMessage(IntToStr(nOdd));
 ShowMessage(IntToStr(nDoubles));

 r:= 99 -((nOdd * 2)+ nDoubles);
 Edit1.Text:= IntToStr(r)
end;

هذا ما فهمته أتمنى التوفيق

تم تعديل هذه المشاركة بواسطة حسين طي في 15 سبتمبر 2009 في 05:34

#8

إضافة إلى ما تفضل به الأخوة الكرام في الأعلى

معذرة ولكن أعتقد انك مبتدئة مثلي لذا سأشرح بطريقة مبسطة ( لكنها تعتمد على مبدأ لا تعطني سمكة بل علمني كيف أصطاد )

المشكلة تتكون من جزئين لذا وجب فصلهما :

1 - التعامل مع الملفات النصية

2 - العملية الحسابية التي ذكرتي

أولا عليك بالتعرف على كيفية التعامل مع الملفات، كيف يمكن ذلك ؟

إسألوا google فلديه الخبر اليقين

النتيجة ستحصلي عليها بدقة كلما كانت كلمات منتقاة

هذه من النتيجة السابقة

Delphi Basics : Files

Writing and reading to/from a text file

النتيجة باللغة الانجليزية :S ..... لا مشكلة google لديه الحل عبر خدمة الترجمة : أدوات اللغة ( إلا إذا كانت جيدة ويجب أن تكون كذلك )

الجزء الثاني لن يكون أصعب

==================

ربما فهمك بعض الأخوة هنا بخصوص الأعداد الفردية والزوجية كالتالي :

مجموعة الأعداد الفردية = ( 1 ، 3 ، 5 ، 7 .... )

مجموعة الأعداد الزوجية = ( 2 ، 4 ، 6 ، 8 ... )

وأعتقد انك تقصدي مرتبة الرقم داخل سلسلة العدد في كل سطر من أسطر الملف، هكذا :

4802550011

الفردية بلون أزرق والزوجية بلون أحمر ( انطلاقا من اليسار إلى اليمين )

موفقة بإذن الله

من دواعي فلسفة السخط في الطبائع الخيرة أن يكون الإنسان مجبولا على الإحساس بالواجب والشعور باللياقة . ذلك أن الذي يجبل على هذا الخلق يرى الأشياء كما هي كائنة ثم يراها كما يجب أن تكون فلا يلبث أن يجد في كل شيء نقصا ولا يلبث أن يجد في كل شيء باعثا للأسى و الأسف وداعيا إلى النقد والمذمة . فيكون غضبه أكثر من رضاه وحزنه أعم من فرحه ، ويكون إلى التنفير والقول بالتشاؤم أميل منه إلى التبشير والقول بالتفاؤل - العقاد

#9

مرحبا أخي djaballah75

يمكن أنك لم تنتبه للكود جيدا لو دققت النظر للكود ثانية سوف تلاحظ أن الدالة Odd تنظر إلى قيمة المتغير i والمتغير i يستعمل للسطور ال Memo

يعني على إعتبار أت الرقم موزع على أسطر Memo فكل سطر يشير إلى مرتبة ( خانة ) أليس كذلك ,

4

8

0

2

5

5

0

0

1

1

هكذا هم على Memo المشكلة التي أردت توضيحها أن الرقم 4 هو في الخانة 1 صح لكن على Memo وإن كان بالسطر الأول ولكن رقم هذا السطر

هو 0 بالنسبة لل Memo لأنها تبدأ بالعد من الرقم صفر و هكذا ستكون المرانب معكوسة يعني لما المرتبة واحد بتكون صفر والمرتبة إثنان بتكون 1

راح تنقلب طريقة الحل لها السبب قلبت المسألة لما رقم السطر بيكون فريدي نضيف قيمة الرقم عليه للعدد الزوجي nDoubles والعكس بالعكس

#10

أهلا أخ حسين

بالفعل لم انتبه لذلك، وكأني رأيتها هكذا

  1.  
  2. odd (s[i])
  3.  

حتى هاته غير صحيحة إذ يجب تحويلها إلى قيمة عددية أولا

شكرا

من دواعي فلسفة السخط في الطبائع الخيرة أن يكون الإنسان مجبولا على الإحساس بالواجب والشعور باللياقة . ذلك أن الذي يجبل على هذا الخلق يرى الأشياء كما هي كائنة ثم يراها كما يجب أن تكون فلا يلبث أن يجد في كل شيء نقصا ولا يلبث أن يجد في كل شيء باعثا للأسى و الأسف وداعيا إلى النقد والمذمة . فيكون غضبه أكثر من رضاه وحزنه أعم من فرحه ، ويكون إلى التنفير والقول بالتشاؤم أميل منه إلى التبشير والقول بالتفاؤل - العقاد

مواضيع مشابهة