رفتن به مطلب
  • 0

پیمایش محتویات فایها


mehdi29665

سوال

سلام و خسته نباشید خدمت اساتید.

در بیسیک دستور یا تابعی هست که بشه محتویات فایلی رو از نقطه خاصی شروع به خواندن کرد یا اینکه بشه در نقطه خاصی از فایل متنی تغییرات انجام داد.

با تشکر

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

9 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 7 دقیقه قبل، mehdi29665 گفته است :

سلام و خسته نباشید خدمت اساتید.

در بیسیک دستور یا تابعی هست که بشه محتویات فایلی رو از نقطه خاصی شروع به خواندن کرد یا اینکه بشه در نقطه خاصی از فایل متنی تغییرات انجام داد.

با تشکر

 

منظورت از فایل چه نوع فایلی هست دقیقا؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 1 دقیقه قبل، محمدرضا شاهپیری گفته است :

منظورت از فایل چه نوع فایلی هست دقیقا؟

فقط فایل متنی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

کل برنامه من اینطوره که اطلاعات سنسور دما از طریق وای فای به گوشی ارسال میشه و برنامه هم مقدار دما رو همراه با تاریخ و زمان داخل فایل متنی ذخیره میکنه البته اینکار از طریق سرویس انجام میشه گه اگه برنامه بسته بشه یا گوشی قفل بشه بازم به ذخیره سازی ادامه بده.

حالا من میخام در نمای اصلی برنامه وقتی که روی صفحه گوشی باز شده یا همون لایوت بیام نحوه تغییرات دما در 24 ساعت گذشته رو بصورت نمودار نشون بده ( دقیقا مثل نحوه کارکرد سی پی یو در تسک منیجر ویندوز)

خب تا اینجا من اومد سرویس رو راه اندازی کردم و در بازه 1 ثانیه ای اطلاعات رو از وای فای میگیرم و داخل فایل متنی ذخیره میکنم ولی برای نمایش و یا بهتر بگم دسترسی به موقعیت خاصی از فایل (مثلا 1000 خط آخر) مشکل دارم.

البته میشه کل فایل رو از اول به روش خط به خط خوند تا به موقعیت مورد نظر رسید ولی میخام بدوم تابع خاصی برای اینکار وجود نداره (فک کنم ویژوال بیسیک با دستور get  و put اینکار رو میشدانجام داد)

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 2 ساعت قبل، mehdi29665 گفته است :

 

روشهای زیادی هست عزیز. ولی عمده کار شما با دستور Regex.Split انجام میشه. در این مورد زیاد تو انجمن بحث شده. سرچ کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

فرمایش استاد شاهپیری عزیز درسته می تونید اسپلیت هم کنید.

اما اگر به صورت لاین به لاین اطلاعات توی فایل درج میشه، یعنی به این شکل »

TEST1
TEST2
TEST3
TEST4
.
.
.
TEST N

 می تونید فایل رو به وسیله ی این کد بخونید و توی یک متغییر لیست بریزید »

'Display All Lines
Private Logs As List = File.ReadList(File.DirInternal,"logs.txt")
For i = 0 To Logs.Size - 1
	Log(Logs.Get(i)) ' - - - -> Iterate All List
Next

'Get Custom Index
Log(Logs.Get(1000))

 

خب اگر دوست داشتید برای هر خط مثلا مرتب سازی انجام بشه و . . .  می تونید یک Structure  یا Type  توی بیسیک تعریف کنید و این داده هارو اونجا قرار بدید و به صورت بهتر از اطلاعات لیست استفاده کنید.

نحوه تعریف Structure  » که باید یا در Globals  یا در Process_Globals  تعریف بشن.

Sub Globals
	Type Temp(value As Int, time As Long, desc As String)
End Sub

 

مثال »

Dim t As Temp
t.Initialize
t.time = DateTime.Time(DateTime.Now)
t.value = "33 C"
t.desc = "No Desc"

Logs.Add(t)

 

موفق باشید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 11 ساعت قبل، مجید آرتا گفته است :

سلام

فرمایش استاد شاهپیری عزیز درسته می تونید اسپلیت هم کنید.

اما اگر به صورت لاین به لاین اطلاعات توی فایل درج میشه، یعنی به این شکل »


TEST1
TEST2
TEST3
TEST4
.
.
.
TEST N

 می تونید فایل رو به وسیله ی این کد بخونید و توی یک متغییر لیست بریزید »


'Display All Lines
Private Logs As List = File.ReadList(File.DirInternal,"logs.txt")
For i = 0 To Logs.Size - 1
	Log(Logs.Get(i)) ' - - - -> Iterate All List
Next

'Get Custom Index
Log(Logs.Get(1000))

 

خب اگر دوست داشتید برای هر خط مثلا مرتب سازی انجام بشه و . . .  می تونید یک Structure  یا Type  توی بیسیک تعریف کنید و این داده هارو اونجا قرار بدید و به صورت بهتر از اطلاعات لیست استفاده کنید.

نحوه تعریف Structure  » که باید یا در Globals  یا در Process_Globals  تعریف بشن.


Sub Globals
	Type Temp(value As Int, time As Long, desc As String)
End Sub

 

مثال »


Dim t As Temp
t.Initialize
t.time = DateTime.Time(DateTime.Now)
t.value = "33 C"
t.desc = "No Desc"

Logs.Add(t)

 

موفق باشید

ضمن تبریک عید سعید فطر.

خیلی هم عالی بود و تشکر از اساتید آرتا و شاهپیری عزیز

فقط یه سوال : متغیر لیست چه مقدار پارامتر رو میتونه نگه داره؟

چون فایل من در هر 24 ساعت حدود 90 هزار خط که هر خط بطول حدود 200 بایت بشه در مجموع حدود 20 مگ حجم فایلم در بیاد.

هر چی گشتم در مورد محدودیت متغیرها در b4a چیزی پیدا نکردم.

بازم تشکر از اساتید محترم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1398/03/15, 11:37:47، mehdi29665 گفته است :

ضمن تبریک عید سعید فطر.

خیلی هم عالی بود و تشکر از اساتید آرتا و شاهپیری عزیز

فقط یه سوال : متغیر لیست چه مقدار پارامتر رو میتونه نگه داره؟

چون فایل من در هر 24 ساعت حدود 90 هزار خط که هر خط بطول حدود 200 بایت بشه در مجموع حدود 20 مگ حجم فایلم در بیاد.

هر چی گشتم در مورد محدودیت متغیرها در b4a چیزی پیدا نکردم.

بازم تشکر از اساتید محترم

شما به لیست هر نوع مقداری رو میتونید بدید محدودیت نوع داده نداره.

اینم Data type  توی B4A :

Byte : 1byte signed: -128 to 127
Char : 2bytes unsigned: 0 to 65535 : not all values are valid Unicode code points
Short : 2bytes signed: -32768 to 32767
Int : 4bytes signed: -2147483648 to 2147483647
Long : 8bytes signed: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 (9.2...E+18)
Float : 4bytes +/- 3.4e +/- 38 (~7 digits)
Double : 8bytes +/- 1.7e +/- 308 (~15 digits) 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1398/03/18, 21:56:45، مجید آرتا گفته است :

شما به لیست هر نوع مقداری رو میتونید بدید محدودیت نوع داده نداره.

اینم Data type  توی B4A :


Byte : 1byte signed: -128 to 127
Char : 2bytes unsigned: 0 to 65535 : not all values are valid Unicode code points
Short : 2bytes signed: -32768 to 32767
Int : 4bytes signed: -2147483648 to 2147483647
Long : 8bytes signed: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 (9.2...E+18)
Float : 4bytes +/- 3.4e +/- 38 (~7 digits)
Double : 8bytes +/- 1.7e +/- 308 (~15 digits) 

 

از بابت  محدودیت متغیرها که گفتید تشکر.

ولی منظورم این بود که قراره با دستور readlist محتویات فایل متنی رو بریزم داخل متغیر لیست و اینکار میاد هر خط که آخرش crlf داشته باشه به عنوان یک آیتم به لیست اضافه میکنه

مثلا فایلی با بیست خط رو وقتی که با دستور بالا خوندم و داخل لیست قرار دادم اندازه لیست من میشه 20 (list.size)  اصل سوالم اینه که این list.size حداکثر چقدر میتونه باشه

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بازم میگم توی لیست و تعداد ایتم هاش محدودیتی نیست.

image.png

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...