امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
چندتا سوال
نویسنده پیام
VBYOFSKI آفلاین
كاربر تک ستاره
*

ارسال‌ها: 41
موضوع‌ها: 15
تاریخ عضویت: بهمن ۱۳۸۶

تشکرها : 22
( 12 تشکر در 10 ارسال )
ارسال: #1
چندتا سوال
سلام
آقا من چندتا سوال داشتم هر کی میدونه جواب بده. لطفا.Smile

1- تفاوت Null و Empty ؟ (من خودم نتونستم یه جواب درست و حسابی در مورد Null توی VB پیدا کنم. چندتایی بود ولی درستو حسابی توضیح نداده بود)

2- تفاوت توابع LOF و FileLen ؟

3- تقاوت توابع Len و LenB ؟


ARSENAl For Life

008



۱۸-بهمن-۱۳۸۶, ۱۸:۲۹:۱۴
ارسال‌ها
پاسخ
Di Di آفلاین
مدير بخش هك و كرك
*****

ارسال‌ها: 2,358
موضوع‌ها: 116
تاریخ عضویت: اسفند ۱۳۸۵

تشکرها : 1816
( 4046 تشکر در 1321 ارسال )
ارسال: #2
RE: چندتا سوال
نول یعنی هیچی، پوچ.
Empety یعنی خالی، بدون مقدار. تقریبا شبیه تفاوت هارد فرمت نشده (Null) و هارد فرمت شده (Empety) گرچه هردوشون خالی هستن ولی کارائییشون فرق فیلکوله!!
تابع Len طول یه متغییر رشته ای رو بر می گردونه . مثلا طول رشته MAhdi برابر عدد 5 هست. در حالی که تابع LenB طول بایت متغییر رو می ده. برای مثل متغییری که اعداد 0 تا 255 رو می تونه در خودش جا بده طول 60 داره . یعنی کوچکترین متغییر هست.

۱۸-بهمن-۱۳۸۶, ۲۰:۲۸:۰۴
وب سایت ارسال‌ها
پاسخ
VBYOFSKI آفلاین
كاربر تک ستاره
*

ارسال‌ها: 41
موضوع‌ها: 15
تاریخ عضویت: بهمن ۱۳۸۶

تشکرها : 22
( 12 تشکر در 10 ارسال )
ارسال: #3
RE: چندتا سوال
Di Di نوشته است:تابع Len طول یه متغییر رشته ای رو بر می گردونه .

سلام
حرف شما درست ولی چرا تو VB برای کار کردن با فیلهای تصادفی در قسمت Len هم می شه از Len استفاده کرد هم از LenB مگه Len طول متغیر رشته ای رو بر نمی گردونه پس چطور می تونه طول رکورد داده شده رو به دست بیاره؟

Open "C:\Test\Test.dat" For Random As #FileNum Len = Len(TelNum)

Open "C:\Test\Test.dat" For Random As #FileNum Len = LenB(TelNum)


ARSENAl For Life

008



۱۹-بهمن-۱۳۸۶, ۱۴:۴۵:۱۳
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #4
RE: چندتا سوال
سلام

1-empty یعنی متغیر ما مقدار اولیه نداره و در واقع خالیه اما null یعنی متغیر ما مقدار معتبری نداره . همون مثال هارد دیسک آقای Di Di بسیار جالب بود .

2-توابع LOF و FileLen طول فایل رو به بایت برمیگردون اما تفاوت اصلیشون اینه که اگر شما تغییری در فایل باز شده بدی طول فایلت تغییر میکنه ، تابع LOF قابلیت اینو داره که طول فعلی فایل شما رو بهت بده (بعد از تغییرات) مثلا شما یک فایل رو باز میکنی و چندین بار محتویاتش رو تغییر میدی حالا میخوای بفهمی الان فایلت چقدر طول داره در نتیجه از LOF استفاده میکنی اما FileLen تغییرات شما رو نادیده میگیره و همون طول فایل اولیه در زمان باز شدن رو به شما برمیگردونه !

3-تفاوت اصلی Len با LenB در متغیر های معمولی و غیر String محسوس نیست پس از نظر کارایی برای شما یک معنا میدن . اگر درست حدس زده باشم اگر TelNum یک متغیر غیر string باشه جواب هر دو تابع روی اون متغیر یکسان خواهد بود !
اما 2 حالت متفاوت داریم ...... حالت اول اگر متغیر String باشه دوتا تابع روش متفاوت عمل میکنن چون یکیشون طول رشته رو میده و یکشیون تعداد بایت هایی که در حافظه اشغال کرده که خب صددرصد متفاوت خواهند بود .

حالت دومش هم در زمانی که شما خودتون یک Type میسازید . مسئله خاصی به نام DWord alignment ( تنظیم و فاصله گذاری بایت ها در حافظه ) هست که اگرچه در VB بشکل اتوماتیک انجام میشه فقط با وجود تابع LenB قابل درک کردن هست . مثال پایین رو ببینید :

کد:
Type Generic
     FirstName as String * 5
     LastName as String
     ChildrenAges (1 to 5) as Byte
   End Type

حالا دو تا تابع رو صدا میزنیم و جواب میگیریم :

کد:
LenB(Generic) = 21
   Len (Generic) = 14

در زمان صدا زدن تابع Len ، متغیر FirstName دارای طول 5 ، متغیر LastName دارای طول 4 ( این طول ثابت متغیرهای String بدون محدوده هست علت وجود اون یک ساختار درونی و مخفی هست با نام String descriptor ) و متغیر آخر شما ChildrenAges دارای طول 5 هست که مجموعا میشن 14 تا .

اما در زمان صدا زدن تابع LenB ( با احتساب عمل DWord alignment ) ، متغیر FirstName دارای طول 8 بایت ( 4 حرف یونیکد که هرکدوم 2 بایت هستند ) متغیر LastName دارای طول 8 بایت (2 بایت باقی موند از متغیر قبلی + 2 بایت فاصله + 4 بایت طول ساختمان String descriptor ) و متغیر آخر شما ChildrenAges دارای طول 5 بایت هست که مجموعا میشن 21 بایت .

در اینجا ، تابع LenB مقدار طول Type شما رو در حافظه برمیگردونه بعد از اینکه عملیات DWord alignment در حافظه روی اون انجام شده در صورتیکه Len فقط طول واقعی یا اصلی Type شما رو برمیگردونه . وی بی در زمان خوندن و نوشتن Type ها روی دیسک هوشمندانه عمل میکنه و تبدیلات میانی رو طوری انجام میده که شما متوجه نشین پس با خیال راحت میتونین Type های خودتون رو توی فایل بنویسید و بخونید . این هم نکته ای بود که بد نیست بدونمیم Smile. لینک زیر مثال و توضیحات کاملی ارائه کرده :

http://support.microsoft.com/kb/137729

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۱۹-بهمن-۱۳۸۶, ۱۶:۰۴:۴۷
ارسال‌ها
پاسخ
تشکر شده توسط : VBYOFSKI


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Sad چندتا سوال ديتا بيسي ( کمک کنيد لطفا ) kingoflover 13 10,029 ۱۸-بهمن-۱۳۸۸, ۰۸:۳۵:۳۳
آخرین ارسال: tanhatarin

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS