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

سؤالان: ربط ملفات التيكست مع ADO / out of memory

مغلق
بدأه desperado في 26 مارس 2005 · 0 رد · 407 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1

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

لقد حاولت البحث عن حل للمشكلة التي اواجها في الMSDN Library و في بعض المنتديات و لم اتمكن من الحل إلى الان.

لقد عملت تطبيق يقوم بسحب ملف تيكست Tab-delimited Text عن طيق commondialog.showopen لأني اشتغل على العديد من الملفات المتغيرة . ثم يتم تحميله في الفليكس جريد MSHFlexgrid ثم يحلل المعلومات التي بداخله و يضيف المعلومات المستخلصة على العمود الاخير من الملف و يتم حفظ الملف مرة اخرى عن طريق commondialog.showsave ..

لقد جربت التطبيق و هو يعمل على الملفات الصغيرة و لكن عند محاولة فتح احد الملفات الكبيرة (بعض الملفات يصل الى أكثر من 100,000 سطر) يتوقف التطبيق معطيا الخطأ 7 (out of memory) .

السؤال الأول : هل هناك طريقة معينة للتعامل مع هذا الخطأ بحيث يحمل الفايل بأكمله في ال MSHFlexgrid ؟

السؤال الثاني: هل من الممكن ان احمل الملف عن طريق ADO في ال MSHFlexgrid من خلال ال commondialog.showopen ؟

هذا الكود الذي يعطي الخطأ out of memory و قد جربت طريقتين لتحميل الملف كلاهما تعطي نفس الخطأ:

Sub cmdBtnDXP_Click()

InitMSHFlexGrid1 ' to set number of columns


' first method

Dim hFile As Integer
Dim sLines() As String, sTxt As String
Dim n As Double, nCount As Double
With CommonDialog1
    .CancelError = True
    .Flags = cdlOFNFileMustExist + cdlOFNHideReadOnly
    .Filter = "Data Exported Files (*.DXP - *.TXT)|*.DXP;*.TXT|All Files (*.*)|*.*|Text Files (*.txt)|*.txt|"
    On Error Resume Next
    .ShowOpen
    If Err.Number <> cdlCancel Then
        
        hFile = FreeFile
        Open .FileName For Input As #hFile
        sTxt = Input(LOF(hFile), hFile)
        Close #hFile
        sLines = Split(sTxt, vbCrLf)
        
        nCount = UBound(sLines)
        For n = 1 To nCount
        MSHFlexGrid1.AddItem sLines(n)
       
        Next
    End If
End With

'Secon method
Dim intFile As Integer

intFile = FreeFile
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Input As #intFile
Do While Not EOF(1)
Line Input #intFile, textLine
MSHFlexGrid1.AddItem textLine
Loop
Close #intFile
End If

End Sub

و شكرا....

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

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

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

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

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

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