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

مسح سطر من تكست فايل

مغلق
بدأه projet في 25 مايو 2007 · 26 رد · 2,541 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا استخدم الفجول بيسك دت نت 2005

وابغى اسأل عن الكتابه في تكست فايل

عندي ملف مكون من عدة اسطر وكل سطر مستقل عن الاخر

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

جربت وبحثت عن السطر اللي ابغاه واضفت لاخره وضبط

لكن واجهني مشكله انه يكتب لي نفس السطر مره اخرى

هل فيه طريقه اقدر فيها اسوي ديليت للسطر القديم (قبل الاضافه) واكتب السطر الجديد (بعد الاضافة)؟

اذا فيه احد عنده خبره ياليت يجاوبني

مشكورين مقدما

تم تعديل هذه المشاركة بواسطة projet في 25 مايو 2007 في 15:04

#2

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

كل ما عليك هو اضافت هذا السطر

 textbox1.clear

اكتب هذه السطر وبعدين عندما تضغط على bottm السطر القديم سوف يمتسح

if You.needhelp = true then

msgbox ("Never Ever Ask dam Question  Before Searching in google")

Else 

msgbox ("You are Doing Good")

End if
#3

ابغى امسح من الفايل

انا اتعامل مع فايل جوا البروجكت

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

اشكر لك تعاونك

#4

العفوا منك اخي الكريم بس كا معلومة اضافية

انت تريد تمسح سطر واحد فقط في الفايل ؟

هذا الذي تقصد ؟

اذا كان ذهذا طلبك سوف احوال ابحث لك في الانترنت لني لا اعرف الاجابة :^)

if You.needhelp = true then

msgbox ("Never Ever Ask dam Question  Before Searching in google")

Else 

msgbox ("You are Doing Good")

End if
#5
projet كتب:

السلام عليكم

انا استخدم الفجول بيسك دت نت 2005

وابغى اسأل عن الكتابه في تكست فايل

عندي ملف مكون من عدة اسطر وكل سطر مستقل عن الاخر

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

جربت وبحثت عن السطر اللي ابغاه واضفت لاخره وضبط

لكن واجهني مشكله انه يكتب لي نفس السطر مره اخرى

هل فيه طريقه اقدر فيها اسوي ديليت للسطر القديم (قبل الاضافه) واكتب السطر الجديد (بعد الاضافة)؟

اذا فيه احد عنده خبره ياليت يجاوبني

مشكورين مقدما

يرجى ارفاق مثال عملي موضحا فيه المشكلة حتى نستطيع مساعدتك حيث أنك لم تضع الكود الذي تظهر فيه المشكلة حتى نستطيع مساعدتك

يرجى قراءة الاعلان تحذير للجميع - ممن يطلبون حل مشكلة ما والالتزام به وبقواعد المشاركة عند سؤالك عن أي مشكلة حتى تحصل على إجابة دقيقة وبأقصى سرعة ممكنة

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 25 مايو 2007 في 17:54

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

للتوضيح اكثر

Imports System.IO  

			Dim line As String
			Dim words As String
			Dim sr As StreamReader = New StreamReader("s.txt")
			line = sr.ReadLine
			words = line + "," + ComboBox1.Text
			sr.Close()
			Dim stream_writer As StreamWriter
			stream_writer = IO.File.AppendText("s.txt")
			stream_writer.WriteLine("" & words & "")
			stream_writer.Close()

ابغى امشي على المف الي اسمه s

شكل الملف كذا

student,ahamad,kaled

age,20,30

ابغى اضيف اسم محمد مثلا

للسطر اللي بدايته

student

بيكون السطر الجديد

student,ahamad,kaled,mohammad

ابغى اكتب السطر الجديد بدل القديم

كيف؟؟؟

اتمنى اني قدرت اوضح اكثر

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 25 مايو 2007 في 20:46 — السبب: تنسيق فقط

#7

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

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#8

سؤالي عن التكست الفايلز،،، لكن ياليت توضح لي اكثر فيما يتعلق ب ملفات XML اذا بتكون بديل مناسب

#9

سأحاول وضع مثال عن استخدام الـ XML إن وجدت الوقت الكافي لعمل موضوع مناسب

وبالفعل ملفات XML تشكل بديل جيد وخصوصا عندما يتعلق الأمر ببيانات منسقة بشكل معين

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#10

ومافيه حل مناسب مع الفايلز؟ :(

لانه مافيه وقت كافي اعيد الشغل

ياليت اذا احد عنده خبره يرد

واستاذ محمد اشكرك واستنى موضوعك عن ال XML

#11

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

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

اقتراحي بخصوص استخدام ملفات XML يمكن أن يكون بالشكل الظاهر في المثال المرفق والطريقة سهلة جدا

WindowsApplication7.zip

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 26 مايو 2007 في 02:18

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#12

السلام عليكم بلا شك أن ما تكلم به مشرفنا محمد سامر هو الافضل من حيث حفظ البيانات في ملفات امنه.

هذا مثال عثرت عليه في بحار الانترنت و جربته وهو يعمل كما ينبغي . إليك ذلك.

Private Sub btnRemoveData_Click(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles btnRemoveData.Click

		RemoveLines( _
		Application.StartupPath & "\filetest.txt", _
		New String() {"LineValueString"})

	End Sub

	Private Sub RemoveLines(ByVal fileName As String, ByVal linesToRemove() As String)
		Dim lines() As String = IO.File.ReadAllLines(fileName)
		Using sw As New IO.StreamWriter(fileName)
			For Each line As String In lines
				If Array.IndexOf(linesToRemove, line) = -1 Then
					sw.WriteLine(line)
				End If
			Next
		End Using
	End Sub

بالتوفيق إن شاء الله.

في المثال يتضح المقال

#13

اذا كنت تستخدم الـ 2005 فهذا جيد

استخدم الكلاس My

هذا حل بعد التجربة يعتبر مناسب جداً لك

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

		Dim finePath As String = "D:\t.txt"
		Dim strBuilder As New StringBuilder

		Dim str As String() = My.Computer.FileSystem.ReadAllText(finePath).Split(vbCrLf)

		For x As Integer = 0 To str.GetUpperBound(0) - 1
			If str(x).StartsWith("student") Then
				str(x) = str(x) & ",mohammad"
			End If
		Next

		For Each s As String In str
			strBuilder.Append(s & vbCrLf)
		Next


		My.Computer.FileSystem.WriteAllText(finePath, strBuilder.ToString, False)


	End Sub

تحياتي

رســالـة من يتيــم

AytamResalhGIFmesg.gif

http://www.aytam.org.sa/message_aytam.php

----

أتمنى لك التوفيق اخي cold0zero في موقعك

logo.gif
#14

هذا هو الحل الذي تريده و لكن في 2003 ، يمكنك عمل التعديل اللازم :

'تكوين ملف نصي كمثال 
		FileOpen(1, "c:\aa.txt", OpenMode.Append)
		PrintLine(1, "هذا هو السّطر الأول")
		PrintLine(1, "لنقل أنّ هذا هو السّطر الثّاني")
		PrintLine(1, "و يكون هذا هو السّطر الثالث")
		FileClose(1)
		MsgBox("توجه الآن و اطلع على الملف قبل التعديل ", , "")
		Dim i As Short, m, a() As String
		'قراءة الملف النصي لمعرفة عدد السطور
		FileOpen(1, "c:\aa.txt", OpenMode.Input)
		Do Until EOF(1)
			m = LineInput(1)
			i = i + 1
		Loop
		FileClose(1)
		'عدد السطور هو i
		ReDim a(i - 1)
		'فتح الملف لتخزين كل محتوياته في المصفوفة
		i = 0
		FileOpen(1, "c:\aa.txt", OpenMode.Input)
		Do Until EOF(1)
			m = LineInput(1)
			a(i) = m
			i = i + 1
		Loop
		FileClose(1)
		' البحث في المصفوفة عن السطر الذي يبدأ بلنقل
		Dim s As Object, u As Short
		For i = 0 To UBound(a)
			s = Split(a(i))
			If s(0) = "لنقل" Then
				u = i
				Exit For
			End If
		Next
		a(u) = a(u) & " الإضافة المطلوبة"
		'مسح الملف القديم و تكوين ملف جديد
		Kill("c:\aa.txt")
		FileOpen(1, "c:\aa.txt", OpenMode.Append)
		For i = 0 To UBound(a)
			PrintLine(1, a(i))
		Next
		FileClose(1)
#15

المشكله في هذا الكود انه يمسح كل الفايل

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

Dim sr As StreamReader = New StreamReader("value.txt")
			line = sr.ReadLine
			w = line.Split(ch)

			While Not line Is Nothing
				If (w(0) = "item.item_name") Then
					Exit While
				End If
				line = sr.ReadLine
				w = line.Split(ch)
			End While

			remo = line.Split(" ")

			words = line + "," + ComboBox1.Text
			sr.Close()


			Dim lines() As String = IO.File.ReadAllLines("value.txt")
			Using sw As New IO.StreamWriter("value.txt")
				For Each l As String In lines
					If Array.IndexOf(remo, l) = -1 Then
						sw.WriteLine(words)
						Exit For
					End If
				Next
			End Using
#16

عزيزي... هل جربت الكود اللذي كتبته لك ؟؟؟

حتى وإن كان يمسح الملف بالكامل..فهو يقوم بإعادة الملف كما كان فقط يقوم بتعديل السطر اللذي تريد

رســالـة من يتيــم

AytamResalhGIFmesg.gif

http://www.aytam.org.sa/message_aytam.php

----

أتمنى لك التوفيق اخي cold0zero في موقعك

logo.gif
#17
اقتباس
لكن الذي اريده انه يبحث عن سطر معين ويمسحه ويكتب بدل منه سطر جديد بعد التعديل عليه

إذا لا تقول مسح في عنوان الموضوع حتى يكتب الكود كما هو مطلوب!!! ثم بعد ذلك تقول انا اريد استبدال..

الله المستعان

في المثال يتضح المقال

#18

شكر جزيل لك من تعاون

الشهاب الحارق

اخي اعتقد اني وضحت كفايه ودعمت الموضوع بالامثله

اشكرك لك جهدك على اي حال

Issa84

سأقوم بتجربة الكود

تم تعديل هذه المشاركة بواسطة projet في 29 مايو 2007 في 21:30

#19

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

اخي

Issa84

انا اريد عمل نفس الفكره وجرت الكود الذي وضعته لكن تظهر لي المشكله في هذا السطر

Dim strBuilder As New StringBuilder

يظهر لي الخطا التالي

Type 'StringBuilder' is not defined

#20

استبدل السطر اللي فيه خطأ في هذا السطر

		Dim strBuilder As New System.Text.StringBuilder

او اضف

 Imports System.Text

قبل تعريف الكلاس

رســالـة من يتيــم

AytamResalhGIFmesg.gif

http://www.aytam.org.sa/message_aytam.php

----

أتمنى لك التوفيق اخي cold0zero في موقعك

logo.gif
#21

اخ Issa84

الحمدلله ضبط

اشكرك بعنف

جزاك الله عنا الف خير وجعلها الله في ميزان حسناتك

لكل من شارك شكراً جزيلاً

-waf

#22

شكرا اخي

Issa84

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

لكن عندي فايل فيه سطرين بدايتهم نفس الكلمه

studen,dd,ff

student,kk,ll

انا اريد ان يكتب على اخر سطر الي هو الثاني

عملت

exit

من الفور الاولى لكن ماضبط ماادري ايش اقتراحك

والف شكر

#23

ياهلا اخ بروجكت وحنا هنا كلنا لمساعدة بعضنا البعض

على فكرة... انا بالاول واجهتني مشكلة بوجود مسافة بسيطة لذالك افضل لك اضافة الـ Trim

If str(x).Trim.StartsWith("student") Then

-------

اختksa_girl1

الموضوع اسهل مما تتخيلين

فقط خلي الدوران عكسي ووقفي عند اول تنفيذ للشرط

يعني بشكل برمجي

		For x As Integer = str.GetUpperBound(0) - 1 To 0 Step -1
			If str(x).Trim.StartsWith("student") Then
				str(x) = str(x) & ",mohammad"
				Exit For
			End If
		Next

تحياتي

رســالـة من يتيــم

AytamResalhGIFmesg.gif

http://www.aytam.org.sa/message_aytam.php

----

أتمنى لك التوفيق اخي cold0zero في موقعك

logo.gif
#24

اخي الكريم

Issa84

الكود يضبط اذا السطر في اول الملف

لان

السطر

الي يبدا بكلمة

student,dd

عندي في الملف السطر الرابع

لما مسحته وحطيته في اول السطر

ضبط مادري وش المشكله

#25

غريب

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

هذا الملف اللي عندي

AAA
BBB
CCC
student,ABC,DEF
GGG
HIGK
LM
student
student,XXX
YYY
ZZZ

وبعد التفنيذ هذه هي النتيجة

AAA
BBB
CCC
student,ABC,DEF
GGG
HIGK
LM
student
student,XXX,mohammad
YYY
ZZZ

تأكدي من استخدام الـ TRIM

If str(x).Trim.StartsWith("student") Then

رســالـة من يتيــم

AytamResalhGIFmesg.gif

http://www.aytam.org.sa/message_aytam.php

----

أتمنى لك التوفيق اخي cold0zero في موقعك

logo.gif

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

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