PDA

View Full Version : بدست آوردن حجم نوشته های تکست باکس



xrezax
سه شنبه 22 شهریور 1390, 15:54 عصر
دوستان چطور می تونم حجم نوسته های توی تکست باکس را بدت بیاورم ؟؟؟؟
سورس بزارین ممنون میشم :قلب:

_behnam_
سه شنبه 22 شهریور 1390, 16:05 عصر
تابع Len() این کار رو کنید

msgbox Len(Text1.text)

xrezax
سه شنبه 22 شهریور 1390, 16:14 عصر
نه نمی خوام تعداد کارکترارو بدست بیارم. می خوام سایزشو گیر بیارم مثلاً چند کیلو بایت نوشته توی تکست باکس هست

_behnam_
سه شنبه 22 شهریور 1390, 16:20 عصر
نه نمی خوام تعداد کارکترارو بدست بیارم. می خوام سایزشو گیر بیارم مثلاً چند کیلو بایت نوشته توی تکست باکس هست
خوب هر کاراکتر 1 بایت دیگه
هر 1024 بایت هم میشه 1 کیلوبایت

xrezax
سه شنبه 22 شهریور 1390, 17:03 عصر
کی گفته هر کاراکتر 1 بایته ؟؟؟
می خوام دقیق باشه. که اگه خالیش کردم توی یک تکست باکسی همون مقدارو نشون بده

Mohsen.
سه شنبه 22 شهریور 1390, 17:24 عصر
آقا بهنام درست میگن هر کاراکتر یک بایته

M.T.P
سه شنبه 22 شهریور 1390, 17:45 عصر
کی گفته هر کاراکتر 1 بایته ؟؟؟
می خوام دقیق باشه. که اگه خالیش کردم توی یک تکست باکسی همون مقدارو نشون بده

یک فایل NotePad روی دسکتاپ ایجاد کنید ، فایل رو باز کنید یک کاراکتر دلخواه داخلش تایپ کنید مثلا A بعد فایل رو Save کنید و حجم فایل رو ببینید.

xrezax
سه شنبه 22 شهریور 1390, 18:10 عصر
بدویجاد فایل می خوام. راهی نداره ؟؟؟؟

vbhamed
سه شنبه 22 شهریور 1390, 21:40 عصر
سلام

منظور M.T.P (http://barnamenevis.org/member.php?132020-M.T.P) عزيز اين بود كه يك فايل ايجاد كنيد و يك حرف توش بنويسيد و جچم فايل رو ببينيد تا متوجه بشيد كه هر كاراكتر 1 بايت هست
بعدش مي‌تونيد حجم متن تون رو با همون تابع LEN بدست بياريد

محسن واژدی
چهارشنبه 23 شهریور 1390, 16:25 عصر
سلام علیکم
برای درک بهتر موضوع کد زیر را در فرم کپی کنید:

Private Sub Text1_Change()
Dim varLen As Variant
varLen = Len(Text1)

Select Case varLen
Case Is < 1000
Me.Caption = varLen & " bytes"
Case Is < 1000000
Me.Caption = Format((varLen / 1024), "###.00") & " KB"
End Select
End Sub

Private Sub Text1_Click()
Text1_Change
End Sub


موفق باشید

Mr'Jamshidy
چهارشنبه 23 شهریور 1390, 16:51 عصر
البته فکر میکنم تابع LenB کارت رو راه بندازه اما جوابایی که شنیدی کاملا درست بود و لازم به ذکره کخ کاراکتر های غیر انگلیسی (UTF8) دو 2 بایت فضا میگیرن

_behnam_
چهارشنبه 23 شهریور 1390, 17:13 عصر
البته فکر میکنم تابع LenB کارت رو راه بندازه اما جوابایی که شنیدی کاملا درست بود و لازم به ذکره کخ کاراکتر های غیر انگلیسی (UTF8) دو 2 بایت فضا میگیرن
از کدوم منبع در آوردید که کاراکتر های غیر انگلیسی (UTF8) دو 2 بایت فضا میگیرن ؟؟؟
امتحان کنید تا خودتون بفهمید حرفتون صحت داره یا نه

محسن واژدی
چهارشنبه 23 شهریور 1390, 20:03 عصر
البته فکر میکنم تابع LenB کارت رو راه بندازه اما جوابایی که شنیدی کاملا درست بود و لازم به ذکره کخ کاراکتر های غیر انگلیسی (UTF8) دو 2 بایت فضا میگیرن

سلام
فرقی نمیکنه، همه کاراکترها به یک اندازه فضا میگیرند، البته منظورتون را درباره مطلب &quot;کاراکتر های غیر انگلیسی (UTF8) دو 2 بایت فضا میگیرن&quot; متوجه نشدم چون همه انواع کاراکترها دارای طول Len یک و LenB دو هستند

setroyd
چهارشنبه 23 شهریور 1390, 22:08 عصر
lenb ربطی به این موضوع نداره همون len جواب میده .

returnx
چهارشنبه 23 شهریور 1390, 22:58 عصر
LenB طول رشته رو بر حسب Byte میده...

Mr'Jamshidy
شنبه 26 شهریور 1390, 10:01 صبح
سلام

شما هم خودتون یکم تحقیق کنید متوجه این موضوع میشید که کاراکتر های UTF8 2 بایت فضا میگیرن

برای امتحان این موضوع میتونید تو یک فایل تکست امتحان کنید!

در ضمن تا جایی هم که من فهمیدم دوستمون طول رشته رو بر حسب بایت میخواست...

quiet_programmer
شنبه 26 شهریور 1390, 12:42 عصر
با سلام.

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

موفق باشین.
یاحق.

farboodj1375
شنبه 26 شهریور 1390, 15:07 عصر
البته یه مشکلی هست .... همونطور که دوستان گفتن هر کاراکتر یک Byte حجم داره ولی در نهایت حجم فایل Size On Disk بیشتر میشه...

IamOverlord
شنبه 26 شهریور 1390, 15:43 عصر
چون 256 تا کاراکتر ASCII (و Null) داریم پس یه بایت برای نشون دادن نیاز هست. اما کاراکتر های UNICODE دو بایت لازم دارن (65536 حالت)

M.T.P
شنبه 26 شهریور 1390, 16:21 عصر
دوستان سوال در خصوص حجم نوشته های TextBox هست و Textbox وی بی هم unicode نیست ، لذا استفاده از Len بهترین گزینه است.

vbhamed
شنبه 26 شهریور 1390, 17:11 عصر
البته یه مشکلی هست .... همونطور که دوستان گفتن هر کاراکتر یک Byte حجم داره ولی در نهایت حجم فایل Size On Disk بیشتر میشه...

سلام
خب Size On Disk بستگي به سايز كلاسترهاي هارد ديسك شما داره كه كمترينش 512 بايت هست هر چند كه معمولا روي 16 يا 32 كيلوبايت هم تنظيم ميشه و كلاستر 32 كيلوبايتي معنيش اينه كه يك فايل 1 بايتي 32 كيلوبايت روي ديسك فضا اشغال مي‌كنه و اگر فايلمون 32768 بايت باشه يعني 32767 كه يك كلاستر هست به اضافه 1 بايت اونموقع 64 كيلوبايت فضا اشغال ميشه چون اختصاص فضاي هارد به صورت كلاستري هست و چون 32768 بايت توي 32767 بايت جا نميشه يك كلاستر كامل ديگه هم بهش اختصاص داده ميشه، درست مثل اينكه شما سر امتحان جواب رو در يك صفحه كاغذ مي‌نويسيد و به اندازه يك جمله جا كم مياريد، اينطوري يك كاغذ كامل ديگه به شما مي‌دن نه مثلا يك برگ كوچولو

در هر حال دونستن اينها براي شما زياد مهم نيست، شما از راههاي مختلف مي‌تونيد سايز فايل خودتون رو بدست بياريد كه FSO، باز كردن فايل به صورت باينري، API و ... همه راههايي هستن كه ساير واقعي فايل رو به شما مي‌دن