PDA

نسخه کامل مشاهده نسخه کامل : list box و hashtabel



sanam.b
06-08-2008, 20:41
بازم سلام

جه چوری میشه اطلاعات یه hashtabel رو در یک list box نشون داد ؟(در #C)
به نظر شما کد زیر چه اشکالی داره که فقط نام برنامه ونام ساختار رو نشون می ده(عناصر به hashtable اضافه میشه اما نشون داده نمیشه)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته symtabel نام ساختار است

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بعد اجرا در list box نوشته می شه compiler --symtable

_H2_
07-08-2008, 01:57
سلام
واضح است که کامبو بیچاره، نمیدانم کدام آیتم ساختار symtabel را نشان دهد؟ شما نام عنصری از symtabel که باید نمایش داده شود را مشخص نکرده اید.

بعد هم نیازی به add کردن دستی به کامبو نیست، شما میتوانید کل hashtable را برای نمایش تحویل کامبو بدهید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

sanam.b
07-08-2008, 12:52
سلام
اونی که شما گفتید انجام دادم اما حالا
در خط اول کد زیر
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خطای زیر رو میده
Complex DataBinding accepts as a data source either an IList or an IListSource.

حالاچیکار کنم؟

someone
07-08-2008, 15:09
سلام.

اضافه کردن یک Hashtable به DataSource یک ListBox غیر ممکن هست. دلیلش هم اجرا نشدن
IList Interface هست. البته کدی که دوستمون گذاشتن در ASP.Net بدون هیچ مشکلی اجرا میشه.

راه حل اول اینه که ICollection ها رو از Hashtable استخراج کنیم (key & value) و یک IList اون رو اجرا کنه.

مثلا با استفاده از ArrayList که از IList ارث برده. کافیه یک کلاس جدید برای این کار بنویسین.
راه حل دوم که ساده تر و کاربردی تر هست استفاده از کد زیر هست :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشین.

sanam.b
07-08-2008, 19:16
سلام

جناب someoneاز لطف شما ممنونم اما من از کد شما زیاد سر درنیاوردم فهمیدم مقادیری ره به hashtable اضافه کردید و می دونم foreach چیه و چیکار میکنه اما کدهایی که تو اون بود ااصلا نفهمیدم.

مشکل من اینکه نمی دونم جه چوری اطلاعات رو در خروجی نشون بدم
این اشکالات مربوط به همون کامپایلری که در جریانش هستید من در بخش تحلیل لغوی همه token ها و نشانه ها رو جدا کردم و در این hashtabel ریختم اما نمیدونم چه جوری و با چه کنترلی اونها رو نمایش بدم ممنون میشم اگه به من بگید این اطلاعات رو در چی نشون بدم، لازم نیست حتما لیست باکس باشه میتونه مثلا dataGrid باشه اما مسئله اینکه من طریقه ارتباط کنترل رو با hashtabel یا ساختار رو بلد نیستم
همین مشکل رو با یه ArrayList دارم
(همونطوری که می دونید hashtabel مقدار تکراری قبول نمی کنه بنابراین symhash فقط جدول نماده)

این ArrayList کل token ها و نشانه ها برنامه رو در خودش ذخیره می کنه و تا نتونم درست با اون کار کنم نمی تونم بخش تحلیل معنایی رو هم شروع کنم دوشنبه 21 هم آخرین وقت تحویل پروژه است(لازم نیست حتما برنامه تکمیل باشه) اما من می خوام این چند روز رو که وقت دارم کمی روی تحلیل معناییش کار کنم
اما فعلا نمایش اطلاعات در خروجی دست و پام و بسته:41:

حالا که کل داستان رو می دونید، یه فکری به حال من بکنید

_H2_
07-08-2008, 23:57
سلام


Complex DataBinding accepts as a data source either an IList or an IListSource

در این مورد من یادم نبود و اشتباه کردم، همانطور که کاربر someone گفتند، hashtable واسط IList را پیاده سازی نمیکند.
اصلاً همه (یا بیشتر) کلاسهایی که واسط IDictionary را پیاده سازی کرده اند و سیستم کلید-مقدار دارند، واسط IList را پیاده سازی نمیکنند.

پیشنهاد:
1- میتوان با وراثت، پشتیبانی از واسط IList را اضافه کرد.
2- از DataTable استفاده کنید.
3- از همون روش خودتان و کدی که جناب someone گفتند، برای اضافه کردن دستی مقادیر به کامبو استفاده کنید.

در مورد پست آخری هم که نمیدانم، جریان چیست، ولی DataGridView کنترلری مناسب برای نمایش حالات پیچیده و سفارشی است.

sanam.b
08-08-2008, 01:53
سلام

آقا سواد من تو برنامه نویسی صفره (البته صفر هم نیست همون -6- تا -7-)

برنامه ای که من قرار تحویل بدم اینکه که یه متن رو از کاربر می گیره و به اجزائ تشکیل دهنده مثل کلمات ،اعداد،حروف و علائم تجزیه می کنه وبا مشخصات خودش

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در hashtabel ذخیره می کنه حالا مشکل من اینکه اینtoken هاو مشخصاتشون رو باید درخروجی نشون بدم

(نظر من روی یه لیست باکس 4 ستونی بود اما حالا تو تک ستونیش موندم واسه همین بود که datagridرو پیشنهاد دادم)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
قسمتهایی از کد که قرمز شده رو نمی دونم چیکا رمی کنه ممنون میشم اگه یه نفر واسه من توضیح بده تا من بتونم توی برنام ام ازش استفاده کنم

_H2_
08-08-2008, 14:17
سلام
با توضیحی که دادی، به نظر میرسد به سیستم Dictionary (کلید-مقدار) مثل hashtable نیاز ندارید.

پیشنهاد من برای نگه داری اطلاعات کلاسس System.Collections.Generic.List است که جنریک است.

با تجزیه متن هم مشکل دارید؟ شاید امکانات Regex بتواند کمکی کند.

بهرحال پیشنهاد میکنم، در حلقه که موارد را پیدا میکنید، تک تک آیتم ها را به List فوق Add کنید.
سپس میتوانید، List فوق را به عنوان منبع به DataGridView بدهید و کاملاً به دلخواه خود نمایش را تنظیم کنید.

رنگ و فونت و عنوان ستون و ReadOnly و Select سطری و ...

البته برای این موارد بجز DataGridView کنترلر ListView هم در حالت Detail مناسب است ولی باید دستی مقادیر را مستقیماً به کنترلر Add کرد.