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

استدعاء وحفظ TXT

مغلق
بدأه naddo في 17 مارس 2007 · 18 رد · 1,321 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الاعزاء

ممكن التعديل على هذا المثال بحيث استطيع

ان استدعي اي ملف نصي يحوي ارقام عدد غير محدد اضعها انا في الملف النصي بحيث عند استدعاء هذا الملف النصي والذي هو كالتالي مثلا

121

21547

65487

256547

32659

في المثال المرفق عند استدعاء ملف txt يظهر دائما لكل

سطر رقم حيث ارقام عشوائية تظهر في كل مرة كما يلي وهي محددة عشرة سطور ومتقيدة بعدد الخانات(3)

<ahmed:muhammd=Star,wh=705;

<ahmed:muhammd=Star,wh=533;

<ahmed:muhammd=Star,wh=579;

<ahmed:muhammd=Star,wh=289;

<ahmed:muhammd=Star,wh=302;

<ahmed:muhammd=Star,wh=774;

<ahmed:muhammd=Star,wh=14;

<ahmed:muhammd=Star,wh=760;

<ahmed:muhammd=Star,wh=814;

<ahmed:muhammd=Star,wh=708;

فقط اريد ان يظهر عند حفظ الملف النصي التالي وهذه ارقام انا فرضتها وممكن تغييرها

<ahmed:muhammd=Star,wh=121;

<ahmed:muhammd=Star,wh=21547;

<ahmed:muhammd=Star,wh=65487;

<ahmed:muhammd=Star,wh=256547;

<ahmed:muhammd=Star,wh=32659;

فلو سمحتم اريد منكم بعد التعديل عدم التقيد بعدد خانات الرقم (2او3او4....الخ) وعدم التقيد بالاسطرالمتسلسلة

اي اريد عدد الاسطر دائما بعدد الارقام بشكل تلقائي عند استدعاء الملف النصي من اي مكان في الجهاز الذي يحوي ارقام فقط متسلسلة عمودية انا اختارها

وعذرا جدا جدا على الاطالة واجو ان اكون قد وضحت السؤال

وادامكم الله وزادكم علما

Example.rar

#2

ممكن تجرب الكود ده

Open a For Input As #1
Dim ss As Integer
ss = 0
While Not EOF(1)
ss = ss + 1
ReDim Preserve s(0 To ss) As String
Input #1, w
s(ss) = "<" & Trim(Text1) & ":" & Trim(Text2) & "=" & "Star" & "," & "wh" & "=" & w & ";"
Wend
Close #1

أولا الملف اللي بنفتحه هو a ده الملف اللي فيه الأرقام وساعتها الأرقام هنا مش مرتبطة بعدد معين يعني لو الملف ده فيه 100 رقم هايتكرر السطر 100 مرة

ثانيا ss ده متغير من خلاله اقدر اعرف عدد السطور اللي انا استخدمتها او عدد السطور اللي في الملف بتاع الأرقام يعني

ثالثا الدوارة While واللي بديلها الشرط Not EOF(1) وده معناه اني بقول ل While افضلي اعملي كذا طول ما الشرط ده متحقق

الشرط هو عدم الوصول لنهاية الملف ودي بتبقى بدالة EOF واللي بتحدد إذا كنت وصلت لنهاية الملف ولا لأ وديلها رقم الملف وطبعا بسبقها بكلمة not عشان اقوله في حالة عدم الوصول لنهاية الملف

رابعا بزود المتغير ss بواحد كل مرة عشان يبقى زي عداد

خامسا ReDim إعادة تعريف المتغير بتاع المصوفة اللي بخزن فيها الكلام بحيث انها ماترتبطش بعدد معين يعني انا كل مرة بعرفها بعدد السطور اللي انا وصلتلها

Preserve ودي عشان ماتمسحش القيم السابقة في المصفوفة مجرد بتزود سطر جديد في المصفوفة ومالهاش دعوة بالباقي

سادسا w وده متغير حرفي عادي مش مصفوفة لأني باخد فيه كل مرة قيمة وبخذنها في المصفوفة وبالتالي مش محتاج انه يكون مصفوفة

يارب أكون وفقت في إجابتك وياريت تسامحني على اي سهو أو تقصير

zsO56863.jpg
#3

شكرا لاستجابتك اخي وبارك الله بك

ولكن ممكن من فضلك ارفاق المثال المعدل بهذا الكود

#4

وينكم وين رحتوا يا اخوان

#5

اخي

كل التغييرات التي قمت بعملها هي

التعريف

من Dim a, w(1 To 10), s(1 To 10) As String

إلى Dim a, w, s() As String

فتح التكست وأخذ القيم المطبوعة

Open a For Input As #1
For i = 1 To 10
Input #1, w(i)
Next i
Close #1

تم مسح هذا الكود من الحدث Form_Load

استبدال الكود

For i = 1 To 10
s(i) = "<" & Trim(Text1) & ":" & Trim(Text2) & "=" & "Star" & "," & "wh" & "=" & w(i) & ";"
Next i

بالكود

Open a For Input As #1
Dim ss As Integer
ss = 0
While Not EOF(1)
ss = ss + 1
ReDim Preserve s(0 To ss) As String
Input #1, w
s(ss) = "<" & Trim(Text1) & ":" & Trim(Text2) & "=" & "Star" & "," & "wh" & "=" & w & ";"
Wend
Close #1

في الحدث Command1_Click

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

واي تعديل أخر قد يكون في تحديد الملف المحتوي على سلسلة الأرقام لأنه حتى الأن ثابت بأنه txt.txt الموجود بنفس مسار البرنامج

ويمكنك أن تقوم بتحديد ملف أخر أو جعل المستخدم هو الذي يحدده

يارب أكون وفقت في إجابتك وياريت تسامحني على اي سهو أو تقصير

Example2.rar

zsO56863.jpg
#6

اخي شكرا لكل مرور لك ولجهودك المبذولة

لكن يمكن انا ما وضحتلك السؤال لانه المثال مازال نفس العمل رغم التعديل (من حيث عدد الارقام والخانات والاسطر)والارقام العشوائية التي تظهر في كل عملية حفظ لاي ملف ارقام

انا اريد ان استدعي اي ارقام كانت اضعها انا مسبقا في ملف نصي ليس كما هي الان مهما كتبت من ارقام تظهر بشكل عشوائي فارجوك خلصني من تعليمة Round لاني اريد ان تظهر ارقام انا احددهاوارجو ان لا اظل مقيد بعدد الاسطر وعدد الخانات للرقم وحفظ ملف عشوائي لاي ارقام كانت فدائما مهما كان في الملف النصي من ارقام محددة بالنسبة لي لا يظهر عند الحفظ الا هذا الملف لارقام عشوائية لم اضعها في الملف النصي فلاحظ اخي هنا انا مقيد بـعشرة اسطر فقط وثلاث خانات للرقم

وبنفس الارقام العشوائية التي لم اضعها في اي ملف نصي مسبقا وهذا هو دائما اخي

<ahmed:muhammd=Star,wh=705;

<ahmed:muhammd=Star,wh=533;

<ahmed:muhammd=Star,wh=579;

<ahmed:muhammd=Star,wh=289;

<ahmed:muhammd=Star,wh=302;

<ahmed:muhammd=Star,wh=774;

<ahmed:muhammd=Star,wh=14;

<ahmed:muhammd=Star,wh=760;

<ahmed:muhammd=Star,wh=814;

<ahmed:muhammd=Star,wh=708;

وتقبل تحياتي ولا تؤاخذني اخي الكريم والله يزيدك كرم وعطاء وعلم دائما

#7

اخي الغالي

لو انا فاهم اللي انت عاوزه كويس بحب افكرك بأني قلت

اقتباس
واي تعديل أخر قد يكون في تحديد الملف المحتوي على سلسلة الأرقام لأنه حتى الأن ثابت بأنه txt.txt الموجود بنفس مسار البرنامج

ويمكنك أن تقوم بتحديد ملف أخر أو جعل المستخدم هو الذي يحدده

انت ممكن بكل بساطة تشيل الكود اللي بيخزن الأرقام في الملف txt.txt الموجود بنفس مسار البرنامج

وتحط انت في الملف ده اي ارقام انت عاوزها باي عدد من الخانات والأسطر بدون قيود خالص

وكمان في حاجة انا نسيت اعدلها في النسخة اللي قبل كده اللي هي في عملية الحفظ الأخيرة للملف الناتج

For i = 1 To 10

تتحول ل

For i = 1 To ss

وده التعديل في المرفقات

انا شيلت الكود اللي بيخزن الأرقام العشوائية وكمان صلحت الغلطة اللي قبل كده

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

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

وأي سؤال أو استفسار ماتترددش بطرح

Example3.rar

تم تعديل هذه المشاركة بواسطة egypt_man في 19 مارس 2007 في 02:51

zsO56863.jpg
#8

اخي العزيز بارك الله بك وزادك علما

الف الف الف ..........شكر واحترام وتقدير لتواضعك وكرمك

لطفا منك اخي

ممكن( ان شاء الله بكون سؤال اخير) حول ماسبق

هل يمكن التعديل ايضا عند حفظ الملف يظهر في السطر الاول دائما العبارة

<start;

وفي السطر الاخير دائما العبارة

<finish;

مع اطيب الامنيات لك بدوام الصحة

#9

اخي المقصود هو تعليمة EOF

مثلا لواردنا ان يكون دائما في بداية الملف النصي عند حفظه العبارة<start; نستخدم

Dim ff

Open "c:\filename.txt" For Input As #1

Do While Not EOF(1)

Line Input #1, ff

Text1.Text = Text1.Text & vbNewLine & ff

Loop

Close #1

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

#10

اخي انا بعرف اني ضايقتك بكثرة الاسئلة بس ارجوك اتحملني وان شاء الله بكون اخر سؤال

فتواضعك وكرمك من البداية هي التي جعلتني استنجد بك واكثر الاسئلة عليك

فقط وانت باذن الله قادر على الاجابة اريد ان يكون الملف النصي مابين سطر اول ثابت

وسطر اخير في الملف النصي باستخدامeof او اي وسيلة اخرى اي

السطر الاول دائما هو<start;

والسطر الاخير هو<finish;

وملف الارقام التي عالجناها محصورة او تقع بين السطر الاول والاخيرالسابقين

#11

انا اسف جدا يا أخي

بس انا بقالي يومين تقريبا مش عارف اتابع حاجة خالص على المنتدى

انا دلوقتي في الشغل لكن اول ما أروح البيت هاحاول اعملك اللي انت عاوزه

وأعذرني على التأخير

وماتترددش في اي اسئلة عاوز تطرحها سواء عليا أو على عباقرة المنتدى

وكلنا إن شاء الله معاك

تم تعديل هذه المشاركة بواسطة egypt_man في 22 مارس 2007 في 11:03

zsO56863.jpg
#12

مشكر اخي وانا بانتظارك

#13

بصراحة يا أخي انا مش عارف إذا كنت فهمت انت عاوز ايه صح ولا لأ

انا عدلتلك البرنامج على أساس ان الملف الناتج أو النهائي

هو اللي هانخلي فيه السطر الاول دائما هو<start; والسطر الاخير هو<finish;

اللي بيبقى مكتوب فيه

<ahmed:muhammd=Star,wh=121;
<ahmed:muhammd=Star,wh=21547;
<ahmed:muhammd=Star,wh=65487;
<ahmed:muhammd=Star,wh=256547;
<ahmed:muhammd=Star,wh=32659;

هايبقى مكتوب فيه

<start;
<ahmed:muhammd=Star,wh=121;
<ahmed:muhammd=Star,wh=21547;
<ahmed:muhammd=Star,wh=65487;
<ahmed:muhammd=Star,wh=256547;
<ahmed:muhammd=Star,wh=32659;
<finish;

وياريت لو مش ده اللي انت عاوزه تحاول تشرحلي أكتر ايه المطلوب

التعديل بكل بساطة هايبقى في الجزء بتاع

اقتباس
فتح التكست لوضع القيم الجديدة والمضاف إليها الأسم

زي ما انت كاتب في ملاحظات البرنامج

وده هايتحول من

Open gPath For Output As #1
For i = 1 To ss
Print #1, s(i)
Next i
Close #1

إلى

Open gPath For Output As #1
Print #1, "<start;"
For i = 1 To ss
Print #1, s(i)
Next i
Print #1, "<finish;"
Close #1

Example4.rar

تم تعديل هذه المشاركة بواسطة egypt_man في 22 مارس 2007 في 21:31

zsO56863.jpg
#14

اخي والله ان اللبيب من الاشارة يفهم روح الله يزيدك من علمه ماشاء الله عليك

فعلا انت انسان رائع

بس!!

بالله عليك اخي لا تنرفز اوتزعل مني اخر اخر اخر ...سؤال

هل يمكن عند استدعاء الملف النصي مثلا hh.txtنستدعيه بدون لاحقة اي يكون اسمه فقط hh

وعند حفظه ايضا نحفظه بدون لاحقة

اي يكون شكله مثل شكل الملف الذي نفتحه عن طريق فتح باستخدام

طولة بالك وحلمك وصبرك مما جعلني اسألك واتعلم منك حبيبي

#15

اخي

الموضوع بسيط جدا

ومافيش نرفزة ولا زعل ولاحاجة

بس بتنمى إن اللي بيتقال هنا في المنتدى مش يتنقل حرفيا وخلاص

ياريت تحاول تفهمه وتجرب فيه واكيد هاتوصل

عشان كده مع كل تعديل كنت بشرحلك ايه اللي فيه قبل ما ارفعه

مع إن اغلب التعديلات بسيطة جدا ومش مستهلة

وبالنسبة لسؤالك الأخير ده عادي جدا

انت ممكن تدخل في الكود وتغير امتداد الملف لأي امتداد او تشيله خالص

لو انت عاوز الملف الناتج أو النهائي من غير امتداد روح في الكود وعدل السطر ده

من

CommonDialog1.Filter = "HnHn|*.txt"

الي

CommonDialog1.Filter = "HnHn|*.*"

أو بدل *.txt اي امتداد انت عاوزه

وياريت تقوم انت بالتعديل ده بنفسك لأنه تغيير سطر واحد

ولو في اي سؤال ماتترددش في وضعه

zsO56863.jpg
#16

ممنون الك كثير ولكن يوجد ملاحظتين :

انا مقيد بالملف الذي في مسار البرنامج(txt.txt)

ولذلك لا استطيع معالجة الارقام في مسار اخر من الحاسب

هل نستطيع اهمال الملف txt.txtنهائيا الموجود في نفس مجلد البرنامج

اي ملف في مسار اخر اريد معالجته وهو في مكانه دون النظر الى مجلد البرنامج

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

CommonDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"

#17

أخي بالنسبة لملاحظتك الثانية والخاصة بالسؤال السابق

انا عملت اللي انا قلتلك عليه وفي حالة الحفظ لما بيقولي اكتب اسم الملف للحفظ بكتب اي اسم واحفظ بيطلع ملف مالوش امتداد أو لاحقة زي ما انت بتقولها

اما في الحالة دي

CommonDialog1.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*"

فممكن ماتشتغلش معاك لأن الأختيار الأول هو txt وبالتالي عشان تتحرر من الأمتداد لازم تختار All Files

حاول مرة تانية وإن شاء الله تشتغل معاك

اما بالنسبة للملاحظة الأولى

فلو انت مش عاوز ترتبط بملف معين

ده معناه انك كل مرة هاتضطر لإختيار الملف ده

يعني لما تضغط على زرار

Writing

يظهر لك صندوق فتح ملف الأرقام

وبعدين صندوق الحفظ

انا عملت التعديل ده والتعديل السابق في المرفقات

بس ياريت تحاول تعمل التعديلات دي بإيدك عشان تستفيد أكتر

Example5.rar

zsO56863.jpg
#18

اخي الكريم

بدلت الان open a for input as#1 بالجملة التالية

Open CommonDialog1.FileName For Input As #1

وتم حل المشكلة والحمد لله

والف شكر الك على الدوام

تقبل احترامي وتقديري

إن شاء الله اي استفسار حول ماسبق اعذرني لاحقا اذا سألتك اي اسئلة اخرى

فانا طامع بكرمك وعطاءك

#19

واالله انك كنت اسرع بالجواب

لاني حطيت ردي السابق قبل ما تجاوب اخي وعندما ضغطت على اضافة رد

وجدت ردك وجوابك اسرع من البرق

الله يعطيك العافية و الصحة والامان

وبارك الله بك اخي والى الامام دائما

هذا الموضوع مغلق.

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