PDA

View Full Version : سوال درمورد Dictionary



arenaw
چهارشنبه 14 تیر 1391, 18:46 عصر
سلام
اول با تشکر از جناب the king و واژدی برای معرفی Collection و Dictionary

الان توی دیکشنری که دارم کار میکنم چون هر آیتم یه متن استرینگ میتونه داشته باشه اومدم
فیلد هارو اول تبدیل به hex کردم بعد با یه کاراکتر فاصله توی اون استرینگ ذخیره کردم تا بشه بازیابیش کرد و اطلاعات چند خطی همه 1 خط بشن
خب مشکلی از نظر کدا نبود ولی یکم موقعی که اطلاعات این فیلدها سنگین میشه لودشم طول میکشه که بخواد دوباره همرو تبدیل به کاراکتر بکنه
میخواستم ببینم میشه یه Type رو بهش اختصاص داد مثلا؟ اصلا روش من استاندارده؟

محسن واژدی
چهارشنبه 14 تیر 1391, 20:16 عصر
سلام علیکم، خواهش میکنم
چرا داده فیلد های را hex کردین؟، البته اصلا یکی از مشکلات کلاس دیکشنری عدم پشتیبانی کامل از زبان های یونیکدی مانند زبان شیرین فارسی هست؛ از نظر ذخیره داده مشکلی نداره اما برخی اوقات در بررسی موجودیت یک آیتم در متد Exist با خطای تشخیص مواجه است علل الخصوص که اگر طول رشته متد key طولانی بشه (نه item) حتی اگر key مورد نظر در دیکشنری وجود داشته باشه مقدار False را برمیگرداند، این خطای تشخیص در کاراکترهای انگلیسی وجود ندارد پس در این موقع میتوانیم رشته key را هگزا شده ذخیره کنیم، این عمل (هگز) در مورد آیتم ها لزومی ندارد چون بیشترین کار (حذف، بازیابی آیتم و...) بر اساس keyها صورت میگیرد و بیشترین کار ما هم با key است (کلیدها طولانی نباشد، هم بهتر است)

میخواستم ببینم میشه یه Type رو بهش اختصاص داد مثلا؟
زیاد متوجه نشدم، در صورت امکان بیشتر توضیح بدین


روش من استاندارده؟ در این موقعیت میشه گفت مناسبه

موفق باشید

arenaw
چهارشنبه 14 تیر 1391, 21:25 عصر
هر کدوم از آیتم های این دیکشنری من حاوی اطلاعات 20 تا (یا کمتر یا بیشتر) تکست باکس مولتی لاین هستش
تو لیستی هم که به کاربر نشون میدم اصلا key ها مشخص نیست بلکه متن تکستی که فیلتر باشه لیست میشه
کی هارو هم برای یک آیتم جدید هر دفعه رندوم تولید میکنم
اومدم یه لیست مخفی و هماهنگ با این لیست درست کردم که موقعی نمایش آیتم مثلا 7 ام لیست؛ بیاد مقدار تکست 7 ام اون لیست مخفی رو (که توش کی ها ذخیره شدن) به دیکشنری بفرسته و جواب رو بگیره

خب حالا این متنی که از دیکشنری که گرفته باز دوباره باید اسپلیت بشه و از هگس در بیاد و تا بتونه توی تکس ها نمایش داده بشه

ولی من میخوتم مثلا مثل آرایه نوع واسش تعریف کنم :

type DicFormat
field(20) as string
end type


و موقع لود خیلی راحت بنویسم

text(i).text = dic.item (listdic.list(listshow.listindex)).field(i)


اینطوری فقط هنگام سیو و لود پروژه باید هگس کنم

محسن واژدی
پنج شنبه 15 تیر 1391, 10:28 صبح
سلام علیکم
همانطور که اطلاع دارید نمیتوانیم typeها را در dictionary ذخیره کنیم، اما میتوانیم به همان صورتی که فرمودین محتوی 20 text-box را با delimiter در یک آیتم ذخیره کنیم، تا آنجایی که بنده متوجه شدم شما مثلا برای نمایش محتوی text-box پنجم مجبور هستید در هربار همه آیتم های ذخیره شده را از هگز خارج و آیتم پنجم را استخراج کنید، اگه اینصورت که عرض درست باشد خب میتوانیم همه محتوی آیتم ها را در زمان اضافه کردن داده ها بجز کاراکترهای جداکننده هگز کنید تا در زمان لزوم مجبور به برگرداندن همه آیتم ها برای دستیابی به delimiter نباشید (اگه اشتباه متوجه شدم ببخشید)

موفق باشید