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

التعامل مع الملفات

بدأه LJD في 10 يونيو 2009 · 11 رد · 908 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي ملف نصي مؤلف من عدة سطور

أريد قراءة سطر منه بحيث أقرأ 6 محارف أولا ثم 14 محرف و هكذا لأضعه في ملف اخر ثم أنتقل للسطر الثاني ....

ما هي التعليمات الازمة لذلك.......

#2

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

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

Dim fn As Integer
fn = FreeFile
Open "C:\test.txt" For Input As #fn

لقراءة 6 محارف من الملف

Dim s As String
s = Input(6, fn)

غير 6 إلى عدد المحارف الذى تريد قراءته

لقراءة سطر كامل

Line Input #fn, s

يجب عليك قبل القراءة أن تتأكد من أنك لم تصل إلى نهاية الملف

If Not EOF(fn) Then
'Read data
End If

مثلا ,, هذا الكود يقوم بقراءة ملف سطر سطر حتى يصل إلى نهاية الملف

Private Sub Command1_Click()
Dim fn As Integer
fn = FreeFile
Dim s As String
Open "C:\test.txt" For Input As #fn
Do While Not EOF(fn)
Line Input #fn, s
MsgBox s
Loop
Close #fn
End Sub

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

أشكرك جزيلا

قمت بقراءة ما اريده و لكن اذا أردت كتابة ما أقرأه في ملف اخر

فلا يقبل أن اضع تعليمة Open "C:\test1.txt" For output As #fn1 اخرى (ضمن حلقة الـ Do) غير الموجودة للقراءة

فماذا افعل؟؟؟؟؟

#4

ما رسالة الخطأ؟ وهل قمت بكتابة :

fn = =FreeFile

ضع الكود ليتم تصحيحه :)

بالتوفيق

هذه الجملة خاطئة  :wacko: 


#5

لسوء الحظ ليس لدي على هذا الحاسب ولكن سأحاول وضعه غدا

ممكن توضح لي ماذا تعني هذه التعليمة بالضبط fn = =FreeFile

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

#6

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

هذا الكود يقوم بقراءة ملف سطر سطر ويكتبه فى ملف آخر

Private Sub Command1_Click()
Dim fn As Integer
fn = FreeFile
Dim fn2 As Integer
Dim s As String
Open "C:\test.txt" For Input As #fn
fn2 = FreeFile
Open "C:\test_out.txt" For Output As #fn2
Do While Not EOF(fn)
Line Input #fn, s
Print #fn2, s
Loop
Reset
End Sub

الأمر Reset يستخدم لإغلاق كل الملفات المفتوحة ويمكن استبداله بالكود

Close #fn2
Close #fn

بالنسبة للكود fn = FreeFile

معناه أن يقوم النظام بالبحث عن رقم غير مستخدم ليتم فتح الملف والاستدلال عليه بهذا الرقم فمثلا الكود التالى يعطى خطأ File Already Open

Open "C:\test.txt" For Input As #1
Open "C:\test_out.txt" For Output As #1

لأننا حجزنا الرقم 1 عند فتح الملف الأول ولذلك نستخدم الدالة FreeFile لتجنب حدوث هذا الخطأ

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

thanks, I will try it

#8

وضعت الكود بالشكل التالي فلم يعمل

Dim fn As Integer
Dim fn2 As Integer
fn = FreeFile
fn2 = FreeFile

Dim s As String
Open "C:\test.txt" For Input As #fn
Open "C:\test_out.txt" For Output As #fn2
Do While Not EOF(fn)
Line Input #fn, s
Print #fn2, s
Loop
Reset

فلم يعمل حتى غيرت ترتيب الاسطر في الكود

#9

fn2 = FreeFile

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

Open "C:\test.txt" For Input As #fn

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#10

هذا ما لاحظته و لكن ما تأثير ذلك.........؟؟؟؟؟؟؟

#11

حسنا ,,

Dim x As Integer
x = 1
MsgBox x
x = x + 0
MsgBox x

Dim i As Integer
For i = 0 To 1000000
MsgBox x
Next

هل ستتغير قيمة x???

بالطبع لا

كذلك الحال

فلو استدعيت الدالة FreeFile مليون مرة فلن تتغير القيمة التى ستعود بها حتى يتم استخدام هذه القيمة

لنفرض أن الأرقام الغير مستخدمة والتى ستعود بها الدالة هى 1 , 2 , 3 , 4

عند استدعاء الدالة FreeFile فستعود بالقيمة 1

وعند استدعاءها مرة أخرى ستعود بنفس القيمة

لماذا؟

لأن القيمة 1 لم تستخدم بعد أى لم يتم حجز هذه القيمة لأى ملف فهى ما زالت غير مستخدمة

أما عند استدعاء Open فستقوم بحجز هذا الرقم فتصبح الأرقام الغير مستخدمة هى 2 , 3 , 4

وعند استدعاء FreeFile فستعود بالقيمة 2

فالدالة Open هى التى تقوم بحجز الرقم حتى لا يتم استخدامه من قبل ملف آخر

أرجو أن أكون قد استطعت التوضيح :blink:

تم تعديل هذه المشاركة بواسطة GHOST2010 في 17 يونيو 2009 في 12:53

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#12

شكرا جزيلا

توضيح رائع

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