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

قراءة المتغيرات من TXT فايل

مغلق
بدأه مرجوج الديرة في 22 مارس 2005 · 7 رد · 1,406 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي برنامج على فيجوال بيسك ومجموعة مصفوفات معرفة من داخل الفيجوال، سوالي اريد ان يقوم البرنامج بقراءة قيم المتغيرات من فايل TXT كيف؟؟

مثال:

البرنامج به مصفوفة للموظفين ومصفوفة للرواتب

Dim Emp(100) As String

Dim Sal(100) As String

اسماء الموظفين موجودة في فايل تكست كل سطر به تعريف لاسم الموظف على الشكل التالي:

"Emp(1)="Ali

"Emp(2)="Mohmmad

كيف اجعل البرنامج يقرا هذه المتغيرات منه فايل التكست؟؟

#2

هذا الكود لوضع كل صف في تيكس

' Open
Open "C:\HnHn.txt" For Input As #1
Dim A As String
Input #1, A, B
Text1.Text = A
Text2.Text = B
Close

اما هذا الكود لملأ الكمبو بمحتويات التيكس

Dim sline As String 
nfile = FreeFile 
Combo1.Clear 
Open "C:\HnHn.txt" For Input As #nfile 
While Not EOF(1) 
Line Input #nfile, sline 
Combo1.AddItem sline 
Wend

تحياتي :rolleyes:

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#3

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

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

أود اولا ان اشكر الاخ العزيز HnHn على مساعدته المتواصلة لنا جميعاً فجزاه الله عنا كل الخير.

و لتنويع الإجابات نقول انه يمكن ان نكون دالة بسيطة تقوم بقراءة الملف ثم إرسال محتواياته الى المصفوفة ()Emp كما اراد الاخ العزيز مرجوج ... و لكي يكون المثال واضح دعني افترض ان لدينا ملف اسمه "C:\myFile.txt" يوجد فيه اسماء جميع الموظفين كلاً في سطر مستقل.

Visual Basic 6.0

فيمكننا ان نقوم بتكوين دالة بسيطة GetNames مثلا و وظيفتها إرجاع مصفوفة نصية بإسماء الموظفين ... و شفرتها كالتالي :

Function GetNames(Path As String) As String()
    Dim F As Integer
    Dim Data As String
    
    F = FreeFile
    Open Path For Input As F
    Data = Input(LOF(F), F)
    Close F
    
    GetNames = Split(Data, vbNewLine)
End Function

و الأن لكي نجربها ونقوم بتحميل المصفوفة Emp وعرضها مثلا في مربع قائمة ListBox إسمه مثلاً List1 فيمكن كتابة شيء مثل :

    Dim Emp() As String
    Dim I As Integer
    
    Emp = GetNames("C:\myFile.txt")
    
    For I = 0 To UBound(Emp)
        List1.AddItem Emp(I)
    Next

و لعل هذا يفي بغرضك اخي الحبيب.

------------------------------------------

Visual Basic .NET

و لكي نهون الأمور على بقية الشباب الذين ينون الإنتقال بإذن الله تعالى إلى الرائعة Visual Basic .NET اضع التصور التالي لنفس العمل في الدوت نت !

حيث يمكن كتابة الدالة GetNames كما في السابق ( إن اردنا ) او استغلال امكانيات الدوت نت بشكل كالتالي :

    Function GetNames(ByVal Path As String) As String()
        Dim File As New IO.StreamReader(Path)
        Dim Data As String = File.ReadToEnd()
        Return Data.Split(vbNewLine)
    End Function

طبعا يوجد الكثير من الطرق في الدوت نت بل انه من الممكن قراءة الملف وتحميله في المصفوفة ()Emp بسطر واحد ! كالتالي :

Dim Emp() As String = New StreamReader("C:\mFile.txt").ReadToEnd.Split(vbNewLine)

و الان لتجربة ملىء مربع القائمة List1 بالبيانات التي في المصفوفة ()Emp فيمكن ذلك ايضا بسطر واحد كالتالي :

List1.DataSource = Emp

هذا و الله سبحانه اعلى و اعلم.

---------------------------------------------------------------------

مقارنة نهائية سريعة :

شفرة الـ Visual Basic 6 الكاملة هي :

Function GetNames(Path As String) As String()
    Dim F As Integer
    Dim Data As String
    
    F = FreeFile
    Open Path For Input As F
    Data = Input(LOF(F), F)
    Close F
    
    GetNames = Split(Data, vbNewLine)
End Function

Private Sub Command1_Click()
    Dim Emp() As String
    Dim I As Integer
    
    Emp = GetNames("C:\myFile.txt")
    
    For I = 0 To UBound(Emp)
        List1.AddItem Emp(I)
    Next
End Sub

شفرة الـ Visual Basic .NET الكاملة :

 Dim Emp() As String = New StreamReader("C:\myFile.txt").ReadToEnd.Split(vbNewLine)
 List1.DataSource = Emp

اتمنى للجميع حظاً موفقا و السلام عليكم و رحمة الله و بركاته.

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#4

اول شي احب اشكركم جزيل الشكر

سوف اجربها الان واوافيكم بالخبر

#5

السلام عليكم

مرة اخرى لم افلح،

دعوني اوضح الامر اكثر :

لقد عملت بكودك يا استاذ رغيد على الفيجوال بيسك 6 وكان اكثر من رائع ولكن على محرر الفيجوال في البرنامج لم افلح بل لم يقبل الاجراء كاملا

انا اعمل لدى شركة لديها برنامج خاص بها ولكن به ماكرو فاستفيد من هذا الماكرو في عملي ...

الفايل الذي به اسماء الموظفين ورواتبهم ياتيني ملف اكسل عمود للرقم وعمود للاسم وعمود للراتب وعمود للعمولة

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

الذي موجود بالماكرو الان هو :

تعريف لمصفوفة الرقم - والاسم - والراتب - والعمولة - والبدلات

انا اخذ البيانات من الاكسل واضيف قبلها اسم للمتغير بدالة (cocatenate ) فيصبح لدي

emp(1)="ali"

emp (2)="Mohmmad"

Num(1)="15-00798"

وهكذا للبقية

اخذ هذه المتغيرات نسخ واضيفها في محرر الفيجوال لصق ليقرأها

انا اريده ان يقرأها من فايل TXT او من فايل الاكسل مباشرة بدون عمل نسخ ومن ثم اضافتها في محرر الفيجوال

اسف للاطالة معكم وشكرا لتعاونكم

#6

للرفع

#7

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

اخي العزيز اشعر بأني لم افهمك جيداً ... وحبذا لو ارفقت مثال بسيط لثلاثة او اربعة موظفين يعني الشكل داخل الاكسل ... و شكل ملف الـ txt و الشكل الذي يكون الفيجوال بيسك بعد النسخ !

بهذه النماذج الثلاث سيتسنى معرفة مدى سهولة نقل البيانات و ما هي البيانات اصلا و كيف يجب ان يكون النقل

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

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#8

السلام عليكم

اخي رغيد الطيب، هذا مثال مرفق على الفايل الاكسل الذي اعددته خصيصا لهذا الماكرو

ما افعله الان هو وضع البينانات في sheet1 وبصيغ الاكسل سوف تقرا كل القيم (الشيت الثاني والثالث ثابتة تتغير فيها القيم بتغير القيم في الشيت الاول)

بعد وضع البيانات اقوم بعمل فلتر (لا يساوي N/A) في الشيت الثالث سيتبقى لدي البيانات التي اريد ادخاالها في الماكرو وهي اصلا متغيرات المصفوفة .

ما اريده بالضبط هو :

اما ارسال الماكرو ليقرا الخلية رقم B2 كقيمة للمتغير Cod(1) من الشيت رقم 2

او

ان اضع البيانات في الشيت رقم ثلاثة في ملف TXT ويقرا منه الماكرو فيمة المتغيرات

ارجو ان اكون قد اوصلت المعلومة بالشكل الصحيح

Test.zip

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

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