احتمالا با دیدن عنوان این تاپیک به یاد فرمت داده جیسون بیفتید که مزیت های بسیاری دارد.
اما من در این تاپیک آموزشی، قصد آموزش جیسون رو ندارم بلکه میخواهم آموزش بدم تا چطوری داده هایی مثل متن ها و عدد رو توی یک فایل txt قرار بدیم و همچنین اونارو بخونیم.
درک بهتر:
فرض کنید ما چهارتا عدد داریم:۱۰۰۱و۱۰۰۲و۱۰۰۳و۱۰۰۴
اگر از دیتابیس استفاده نکنیم مجبوریم برای ذخیره هر کدام از این اعداد از دستور writestring فایل txt بسازیم و در نتیجه ۴ تا فایل txt خواهیم داشت که زیاد جالب نیست. الان ما میخواهیم همه این اعداد را فقط توی یک فایل txt ذخیره کنیم. به این صورت:
۱۰۰۱,۱۰۰۲,۱۰۰۳,۱۰۰۴,
به عنوان مثال ما در این آموزش فرض می کنیم ۴ تا ادیت تکست داریم که کاربر بایستی در هر کدام از آن ها عددی وارد کرده و سپس روی دکمه کلیک کند و این اعداد کاربر داخل یک فایل txt ذخیره گردد و بعدا در صورت نیاز این اعداد تجزیه شده و دوباره بصورت جداگانه به نمایش در آیند.
Dim a As string=edittext1.text Dim b As string=edittext2.text Dim c As string=edittext3.text Dim d As string=edittext4.text Dim total_num As string=a&","&b&","&c&","&d&"," File.WriteString(File.DirInternal,"my_numbers.txt",total_num)
توضیح کدهی بالا:
چهارتا متغیر تعریف کردیم از نوع استرینک تا متن، عدد و هر رشته ای رو که کاربر توی ادیت تکست وارد کرد بصورت موقت ذخیره کنه.
یک متغیر دیگه به نام total_num تعریف می کنیم تا ورودی های ادیت تکست رو به وسیله”,” از هم جدا کنه.
نکته بسیار مهم: باید بعد از آخرین ورودی(در اینجا ورودی edittext4) هم دارای کاراکتر”,” باشه.
و در آخر هم این ورودی ها کنار هم توی یک فایل txt و در حافظه dirinteral برنامه ذخیره میشه.
اما اگر بخواهیم تا این ورودی های کاربر رو در صورت لزوم نمایش بدیم باید اینگونه عمل کنیم:
این sub زیر رو بین دوتا sub دیگه درج کنید.
به کامنت درج شده درون این sub توجه گردد.
Sub checkints(txt As String) Dim i1 As String=0 Dim i2 As String For i = 0 To txt.Length Try If txt.CharAt(i) = "," Then i2 = i If txt.SubString2(i1,i2) <> "" Then Dim mystring As String=(txt.SubString2(i1,i2)) 'اینجا کدی رو که میخواهیم پس از تجزیه اجرا بشه می نویسیم مثلا من میخوام برای هر کدام از ورودی هایی که تجزیه میشود یک جعبه پیغام نمایش داده شود. msgbox(mystring,"ورودی تجزیه شده") End If Try i1=i+1 Catch End Try End If Catch End Try Next End Sub
حالا هرجا که میخواهیم میتوانیم با استفاده از کد زیر به تمامی ورودی های کاربر به صورت جداگانه دسترسی داشته باشیم:
checkints(File.readString(File.DirInternal,"my_numbers.txt"))
نکته:
اگر من قطعه کد بالارو مثلا توی رویداد یک دکمه به کار بگیرم به محض کلیک روی دکمه ۴ تا msgbox به ترتیب نمایش داده خواهد شد که هر کدام به ترتیب ورودی هایی را نمایش خواهد داد که کاربر قبلا توی ادیت تکست وارد کرده بود.
اگر شما میخواهید به جای msgbox کار دیگری انجام دهید، مثلا ورودی ها را توی یک لیبل بچینیدیا… باید توی sub که بالا درج کردم پایین اون کامنت دستور مدنظر رو بنویسید.
همچنین شما میتوانید هر تعداد ورودی را بین “,” قرار دهید و به صورت دلخواهی می باشد و ما در اینجا ۴ ورودی را مثال زدیم.
موفق و کامروا باشید.