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

وين عباقرة الفيجيوال بيسك المشروع شغال لكن ليس بشكل صحيح

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

بسم الله الرحمن الرحيم

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

مشكلتي بكل بساطه هي كما يلي

1- عندي مشروع في فيجيوال بيسك

2- الداتا تبعت مشروعي موجوده على ملفات تكست وبظهرها بالمشروع في لست فيو

وعندما اقوم بالتعديل على الداتا تبعت المشروع التعديلات تظهر في فيو لست ويمكن استخدامها بعمليات ثانيه ولكن عند اغلاق المشروع كل التعديلات تختفي وتعود الي الداتا الاوليه المخزنه داخل التكست فايل لا اعرف اين الخطا في الكود تبعي وارجو المساعده لحل المشكله

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

اتمنى المساعده باسرع وقت ولكم جزبل الشكر

دمتم بكل خير

project_file.rar

لا تمت قبل ان تكون ندا

#2

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

Dim item As ListItem
Dim i As Long, j As Integer, x As String
For i = 1 To ListView3.ListItems.Count
 Set item = ListView3.ListItems(i)
x = item.Text & "|" & item.SubItems(1) & "|" & item.SubItems(2) & "|" & item.SubItems(3) & "|" & item.SubItems(4) & "|" & item.SubItems(5)

'save  X  To the file 

Next

ليست لدي معرفة كافية في الملفات النصية لكن اعتقد انه عليك بقراءة جميع ال listview كما في المثال ثم تخزينها بالكامل الى الملف

#4

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

دمة بكل خير

لا تمت قبل ان تكون ندا

#5

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

شكرا مرة اخرى طارق

لا تمت قبل ان تكون ندا

#6

اخ طارق قمت بوضع الكود المعطي عندي في فورم انلوود ولكن لم يعطي نتيجه مرة اخرى شكرا لمررورك ودمت بكل خير

لا تمت قبل ان تكون ندا

#7

هذه الاوامر يجب ان تكتب في حدث التعديل modify بعد تعديل Listview في Command2_Click

واليك التكملة للكتابة على الملف

Dim item As ListItem
Dim i As Long, j As Integer, x As String
Dim intFile As Long
intFile = FreeFile

Open App.Path + "\goods.txt" For Output As #intFile

For i = 1 To ListView3.ListItems.Count
 Set item = ListView3.ListItems(i)
x = item.SubItems(1) & "|" & item.SubItems(2) & "|" & item.SubItems(3) & "|" & item.SubItems(4) & "|" & item.SubItems(5)
Print #intFile, x
Next

Close #intFile
#8

كما قال الأخ طارق يجب التعديل يدويا والبحث عن مكان التعديل في الملف

يمكن الحذف بالبحث عن السطر المحدد وكذلك التغيير بنفس الطريقة

يمكن استعمال FILESYSTEMOBJECT لقراءة الملف بشكل أحسن

ربما يفيدك الكود التالي للحذف

Private Sub DeleteLine(LineNumber As Long) 
  Dim Fso As Object
  Set Fso = CreateObject("Scripting.FileSystemObject")
  Dim oFSTR As Object
  Dim ret As Long
  Dim lCtr As Long
  Dim sTemp As String, sLine As String
  Dim bLineFound As Boolean

  On Error GoTo ErrorHandler
  If Fso.FileExists(App.Path + "\goods.txt") Then
	 Set oFSTR = Fso.OpenTextFile(App.Path + "\goods.txt")
	lCtr = 1
	 Do While Not oFSTR.AtEndOfStream
		sLine = oFSTR.ReadLine
		If lCtr <> LineNumber Then
			sTemp = sTemp & sLine & vbCrLf
		Else
			bLineFound = True
		End If
		lCtr = lCtr + 1
	Loop
	 oFSTR.Close
	 Set oFSTR = Fso.CreateTextFile(fName, True)
	 oFSTR.Write sTemp
	 DeleteLine = bLineFound
   End If
ErrorHandler:
  On Error Resume Next
  oFSTR.Close
  Set oFSTR = Nothing
  Set Fso = Nothing
End Sub

طبعا يمكن كتابة

DeleteLine 5 لكي يتم حذف السطر 5

بالنسبة للتعديل بنفس الطريقة

Private Sub ModifyLine(Nline As Integer, NewLine As String)
  Dim Fso As Object
  Set Fso = CreateObject("Scripting.FileSystemObject")
  Dim oFSTR As Object
  Dim ret As Long
  Dim lCtr As Long
  Dim sTemp As String, sLine As String
  Dim bLineFound As Boolean

  On Error GoTo ErrorHandler
  If Fso.FileExists(App.Path + "\goods.txt") Then
	 Set oFSTR = Fso.OpenTextFile(App.Path + "\goods.txt")
	lCtr = 1
	 Do While Not oFSTR.AtEndOfStream
		sLine = oFSTR.ReadLine
		If lCtr <> Nline Then
			sTemp = sTemp & sLine & vbCrLf
		Else
			sTemp = sTemp & NewLine & vbCrLf
		End If
		lCtr = lCtr + 1
	Loop
	 oFSTR.Close
	 Set oFSTR = Fso.CreateTextFile(App.Path + "\goods.txt", True)
	 oFSTR.Write sTemp

   End If
ErrorHandler:
  On Error Resume Next
  oFSTR.Close
  Set oFSTR = Nothing
  Set Fso = Nothing
End Sub

تعديل: آسف أخي لم أرى مشاركتك

ربما تكون طريقتك أسهل

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

تم تعديل هذه المشاركة بواسطة DreamNet في 18 يوليو 2007 في 12:56

#9

طارق مين قلك انك مش عبقري

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

عن جد شكرا الك انا كثير مبسوطه لانو مشروعي جاهز

شكرا الك كثير ولكل الي حاول يساعدني

لا تمت قبل ان تكون ندا

#10

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

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

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

طبعا شكر خاص للاخ TareqVB

لانه ساعدني بحل مشاكل البرنامج

دمتم بكل خير

project_file.rar

لا تمت قبل ان تكون ندا

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…