لدي ملف نصي مؤلف من عدة سطور
أريد قراءة سطر منه بحيث أقرأ 6 محارف أولا ثم 14 محرف و هكذا لأضعه في ملف اخر ثم أنتقل للسطر الثاني ....
ما هي التعليمات الازمة لذلك.......
لدي ملف نصي مؤلف من عدة سطور
أريد قراءة سطر منه بحيث أقرأ 6 محارف أولا ثم 14 محرف و هكذا لأضعه في ملف اخر ثم أنتقل للسطر الثاني ....
ما هي التعليمات الازمة لذلك.......
السلام عليكــم ورحمـة الله وبركاتــه ،،
أولا يجب عليك فتح الملف للقراءة باستخدام هذا الكود
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
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
أشكرك جزيلا
قمت بقراءة ما اريده و لكن اذا أردت كتابة ما أقرأه في ملف اخر
فلا يقبل أن اضع تعليمة Open "C:\test1.txt" For output As #fn1 اخرى (ضمن حلقة الـ Do) غير الموجودة للقراءة
فماذا افعل؟؟؟؟؟
ما رسالة الخطأ؟ وهل قمت بكتابة :
fn = =FreeFile
ضع الكود ليتم تصحيحه :)
بالتوفيق
هذه الجملة خاطئة :wacko:
لسوء الحظ ليس لدي على هذا الحاسب ولكن سأحاول وضعه غدا
ممكن توضح لي ماذا تعني هذه التعليمة بالضبط fn = =FreeFile
فعندما اضعها من اجل الملف الاخر الذي اريد الكتابة فيه فلا يقبلها.......حتى اغير اسم المتحول
السلام عليكــم ورحمـة الله وبركاتــه ،،
هذا الكود يقوم بقراءة ملف سطر سطر ويكتبه فى ملف آخر
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 لتجنب حدوث هذا الخطأ
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
thanks, I will try it
وضعت الكود بالشكل التالي فلم يعمل
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
فلم يعمل حتى غيرت ترتيب الاسطر في الكود
fn2 = FreeFile
يجب أن تكون بعد فتح الملف الأول أى بعد السطر
Open "C:\test.txt" For Input As #fn
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
هذا ما لاحظته و لكن ما تأثير ذلك.........؟؟؟؟؟؟؟
حسنا ,,
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
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
شكرا جزيلا
توضيح رائع