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

نسخة كاملة : قرائة سطر معين داخل ملف تكست vb6
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم اخواني اني مبتدأ في الفجوال بسك 6
احاول ان اصنع برنامج مهم بالنسبة لي ولكن احتاج كود لفورم مهم
لم اجده ولكن وجدت نفس الفكرة مبرمجة في الدوت نت
هذا الرابط قرائة سطر معين داخل ملف تكست هل يوجد نفس السورس لفجوال بسك 6؟
جزاكم الله خير
السلام عليكم

- هذا مثال يوضح ماطلبته .

- تحياتي .
السلام عليكم...

* أعتذر من أخي Vb_Coder لأني كنت أجهز الرد قبل أن ألاحظ مشاركته :o و على أية حال "في الإعادة إفادة".

بالطبع يمكن ذلك.
اكتب الدالة التالية في القسم العام:
كود :
Private Function ReadLineOfFile(ByVal AFilePath As String, ByVal ALineIndex As Long) As String
    Dim FNum As Integer
    Dim Idx As Long
    Dim ALine As String
    Dim MsgTxt As String
    
    On Error GoTo ReadLineOfFile_Err
    
    ReadLineOfFile = ""
    If ALineIndex < 0 Then Err.Raise vbObjectError + 1001, "IO.ReadLineOfFile", "Negative line numbers not allowed"
    
    ALine = ""
    Idx = 0
    FNum = FreeFile
    Open AFilePath For Input As #FNum
    Do While Idx <= ALineIndex
        Line Input #FNum, ALine
        Idx = Idx + 1
    Loop
    Close #FNum
    ReadLineOfFile = ALine
    Exit Function
    
ReadLineOfFile_Err:
    Close #FNum
    MsgTxt = "حدث خطأ عند محاولة قراءة سطر من الملف." & vbCrLf & vbCrLf & "رسالة الخطأ:" & vbCrLf & Err.Description
    MsgBox MsgTxt, vbExclamation Or vbMsgBoxRight Or vbMsgBoxRtlReading
End Function

* حيث AFilePath هو مسار الملف، و ALineIndex هو رقم السطر.
* لاحظ أن الدالة تعتبر أن ترقيم الأسطر يبدأ بالصفر، أي أن السطر الأول رقمه 0، و السطر الثاني رقمه 1، و السطر الثالث رقمه 2، ... إلخ.

و لقراءة السطر المطلوب قم باستدعاء الدالة كالتالي مثلاً (السطر الخامس):
كود :
Private Sub Command1_Click()
    Text2.Text = ReadLineOfFile("E:\NameList.txt", 4)
End Sub

*** اقتراح:
إذا كنت ستستخدم الدالة بشكل متكرر لقراءة بعض الأسطر فربما يكون من الأسرع و الأسهل قراءة كامل أسطر الملف في مصفوفة ثم قراءة الأسطر من المصفوفة. لعمل ذلك اكتب الدالة التالية في القسم العام:
كود :
Private Function ReadAllLinesOfFile(ByVal AFilePath As String) As Variant
    Dim FNum As Integer
    Dim MsgTxt As String
    Dim ResultStr As String
    
    On Error GoTo ReadAllLinesOfFile_Err
    
    ReadAllLinesOfFile = Null
    
    FNum = FreeFile
    Open AFilePath For Input As #FNum
    ResultStr = Input(LOF(FNum), #FNum)
    Close #FNum
    ReadAllLinesOfFile = Split(ResultStr, vbCrLf)
    Exit Function
    
ReadAllLinesOfFile_Err:
    Close #FNum
    MsgTxt = "حدث خطأ عند محاولة القراءة من الملف." & vbCrLf & vbCrLf & "رسالة الخطأ:" & vbCrLf & Err.Description
    MsgBox MsgTxt, vbExclamation Or vbMsgBoxRight Or vbMsgBoxRtlReading
End Function

في هذه الحالة فإن الدالة ReadAllLinesOfFile تعيد قيمة من النوع Variant يحتوي على مصفوفة يبدأ ترقيم عناصرها بالصفر (الدالة تعيد Null في حالة حدوث خطأ).
و يتم استعمالها كالتالي:
كود :
Private Sub Command1_Click()
    Dim MyList As Variant
    MyList = ReadAllLinesOfFile("E:\NameList.txt")
    If Not IsNull(MyList) Then
        Text2.Text = MyList(3)
    End If
End Sub

أي نقوم بتعريف متغير لتخزين المصفوفة ثم نستدعي الدالة ثم نتأكد من أن القيمة المعادة ليست Null. لاحظ أننا بعد استدعاء الدالة استعملنا المصفوفة MyList للوصول إلى الأسطر.

نرجو الاستفادة و السلام.
(09-03-13, 05:07 PM)ناجي إبراهيم كتب : [ -> ]
كود :
Private Function ReadLineOfFile(ByVal AFilePath As String, ByVal ALineIndex As Long) As String
   Dim FNum As Integer
   Dim Idx As Long
   Dim ALine As String
   Dim MsgTxt As String
   
   On Error GoTo ReadLineOfFile_Err
   
   ReadLineOfFile = ""
   If ALineIndex < 0 Then Err.Raise vbObjectError + 1001, "IO.ReadLineOfFile", "Negative line numbers not allowed"
   
   ALine = ""
   Idx = 0
   FNum = FreeFile
   Open AFilePath For Input As #FNum
   Do While Idx <= ALineIndex
       Line Input #FNum, ALine
       Idx = Idx + 1
   Loop
   Close #FNum
   ReadLineOfFile = ALine
   Exit Function
   
ReadLineOfFile_Err:
   Close #FNum
   MsgTxt = "حدث خطأ عند محاولة قراءة سطر من الملف." & vbCrLf & vbCrLf & "رسالة الخطأ:" & vbCrLf & Err.Description
   MsgBox MsgTxt, vbExclamation Or vbMsgBoxRight Or vbMsgBoxRtlReading
End Function
السلام عليكم 
اخي ناجي 
حين استخدم هذا الفكشن يظهر لي اخطاء وضحتها في الملف المرفق 
ارجو المساعدة وشكرا
(16-04-16, 12:03 PM)hak1wr كتب : [ -> ]
(09-03-13, 05:07 PM)ناجي إبراهيم كتب : [ -> ]
كود :
Private Function ReadLineOfFile(ByVal AFilePath As String, ByVal ALineIndex As Long) As String
   Dim FNum As Integer
   Dim Idx As Long
   Dim ALine As String
   Dim MsgTxt As String
   
   On Error GoTo ReadLineOfFile_Err
   
   ReadLineOfFile = ""
   If ALineIndex < 0 Then Err.Raise vbObjectError + 1001, "IO.ReadLineOfFile", "Negative line numbers not allowed"
   
   ALine = ""
   Idx = 0
   FNum = FreeFile
   Open AFilePath For Input As #FNum
   Do While Idx <= ALineIndex
       Line Input #FNum, ALine
       Idx = Idx + 1
   Loop
   Close #FNum
   ReadLineOfFile = ALine
   Exit Function
   
ReadLineOfFile_Err:
   Close #FNum
   MsgTxt = "حدث خطأ عند محاولة قراءة سطر من الملف." & vbCrLf & vbCrLf & "رسالة الخطأ:" & vbCrLf & Err.Description
   MsgBox MsgTxt, vbExclamation Or vbMsgBoxRight Or vbMsgBoxRtlReading
End Function
السلام عليكم 
اخي ناجي 
حين استخدم هذا الفكشن يظهر لي اخطاء وضحتها في الملف المرفق 
ارجو المساعدة وشكرا

أهلا أخي الكريم , هذا الكود هو للفيجول بيسك6 وأعتقد أنك تستخدم فيجول بيسك دوت نت , الكود يعمل بشكل صحيح على الفيجول بيسك6 .