مشاهده نسخه کامل
: ُSerialize کردن Structure
bad_boy_2007
02-01-2009, 00:29
سلام
اگه ممکنه یک نمونه کد که نحوه سریالیزه کردن یک استراکچر به حالت XML یا Binary حتی المکان به زبون VB بزنید :20:
bad_boy_2007
04-01-2009, 21:24
سلام
اگه ممکنه یک نمونه کد که نحوه سریالیزه کردن یک استراکچر به حالت xml یا binary حتی المکان به زبون vb بزنید :20:
کسی نیست که این کار رو کرده باشه ؟؟
ببینید من میخوام یک سری استراکچر با ساختارهای مختلف ، مثلا استراکچر مشتری ، بانک و . . . رو برای مصارف خاصی که نیاز دارم تو دیتابیسم ذخیره کنم .
اول میخواستم یک تابع بنویسم واسه هر کدوم که استراکچر رو بگیره و کد xml اش رو بده و بلعکس بعد از یه کمی برسی متوجه شدم که دات نت این کار رو به دو شکل انچام میده :
- یکی یک نوع (کلاس - استراکچر - متغیی و . . . ) رو میگیره و کد باینریش رو پس میده و بالعکس
-دیگری هم مثل بالاییه با این تفاوت که کد xm l میده
خروجی xml سرعت کمتری نسبت به xml داره ولی قابلیت حمل داره
من این کار رو تونستم روی یک متغییر انجام بدم ولی روی کلاس و استراکچر نتونستم ، حالا اگه کسی نمونه داره ممنون میشم کمک کنه :11:
bad_boy_2007
04-01-2009, 22:21
فکر کنم مشکلم حل شد !!
این کد برنامم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
تابع GetInfo از کلاس مشتری کد مشتری رو میگیره و استراکچرش رو میده
اینم خروجی ای که بهم داد :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
bad_boy_2007
04-01-2009, 23:13
هنوز هم یک مشکل دارم !
بعضی از استراکچر هام آرایه ای از استراکچر دارن مثلا :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که در این صورت آرایه رو سریالایز نمیکنه و وزمانی هم که پیش از تعریف آرایه از کلمه <Serializable()> استفاده میکنم میگه که آرایه ها قابلیت سزیالیزه شدن ندارن !
حالا باید جیکار کنم ؟؟؟
سلام
احتمالاً ساختار یا کلاسس STRFactor شما مشکل دارد و غیر قابل سریالی شدن است. ساختار STRFactor را نیز اینجا بگذارید.
bad_boy_2007
07-01-2009, 21:03
سلام
احتمالاً ساختار یا کلاسس STRFactor شما مشکل دارد و غیر قابل سریالی شدن است. ساختار STRFactor را نیز اینجا بگذارید.
ممنون از جوابت
ساختارش مشابه STRBuyOrder هست که تو پست قبلی دادم فقط مشکلش تو سربالایز کردن آرایه است یعنی اگه بخوام همون STRBuyOrder رو در نظر بگیرم آرایه ( Public Arr() As STRFactor 'آرایه ای از اقلام فاکتور
) رو سریالایز نمیکنه
میخوام حتی الامکان این کار رو با کد نویسی انجام ندم چون ساختارهام زیادن و اگه بخوام کد بنویسم حداقل 1000 خطی میشه که ارزشش رو دیگه نداره
سریالایز کردن دودویی رو تست نکردم شاید اینطوری بشه !
سلام
من با اینکه اطمینان داشتم، باز تست کردم، هیچ مشکلی مشاهده نکردم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
- مجدداً تست کنید.
- متن کامل خطا را اینجا بنویسید
- ترجیحاً ساختار STRFactor را هم بنویسید.
سریالایز کردن دودویی رو تست نکردم شاید اینطوری بشه !
XmlSerializer در این مورد مشکلی ندارد ولی برای سریال سازی باینری باید از کلاسس زیر استفاده کنید. (البته اگر نمیدانستید!)
System.Runtime.Serialization.Formatters.Binary.Bin aryFormatter
bad_boy_2007
07-01-2009, 23:06
سلام
من با اینکه اطمینان داشتم، باز تست کردم، هیچ مشکلی مشاهده نکردم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
- مجدداً تست کنید.
- متن کامل خطا را اینجا بنویسید
- ترجیحاً ساختار STRFactor را هم بنویسید.
XmlSerializer در این مورد مشکلی ندارد ولی برای سریال سازی باینری باید از کلاسس زیر استفاده کنید. (البته اگر نمیدانستید!)
System.Runtime.Serialization.Formatters.Binary.Bin aryFormatter
سلام استاد
ممنون از راهنماییت
فهمیدم مشکل کار کجاست ولی نمیدونم چطور رفعش کنم !
این استراکچر فاکتور و ملحقاتش :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا وقتی میام و این استراکجر رو سریالایز میکنم با این خطا مواجه میشم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا اگه قبل از اینکه سریالایز کردن شروع بشه از On error resume next استفاده کنم . سریالایز انجام میشه ولی دو تا Enum آخری رو سریالایز نمیکنه که ظاهرا مشکل از اوناست !!!
حالا اگه بیام و نوع اون دو تا رو هم بکنم Int مشکل رفع میشه !
ولی اگه نخوام این کار رو بکنم چی ؟ راه دیگه ای هست ؟؟
bad_boy_2007
07-01-2009, 23:32
درست شد !!!
اینم راهش :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
مشکلتان به ظاهر حل شده ولی اجازه دهید مطالبی چند بیان کنم...
مشکل از آنجا است که Enum های شما ورودی برای مقدار صفر ندارد در حالی که متغییر های مقدار دهی نشده اند و صفر هستند.
شما باید اول تکلیف خود را روشن کنید.
مقادیر Enum شما میتواند صفر باشد یا نمیتواند؟
اگر صفر بودن مجاز است که ساختارهای را چنین اصلاح کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر صفر بودن مجاز نیست خوب چرا مقدار دو متغییر شما باید صفر باشد؟
مقدار PriceType و Type را صراحتاً به مقداری مجاز از محدوده مجاز Enum ست کنید.
=====
ضمناً خصوصیت System.Serializable و System.NonSerialized در کار XmlSerializer بی تاثیر هستند و بود و نبودشان فرقی نمیکند، این صفات در BinaryFormatter و سایر مشتقاتش استفاده میشوند.
پیروز باشید.
bad_boy_2007
09-01-2009, 15:23
سلام
مشکلتان به ظاهر حل شده ولی اجازه دهید مطالبی چند بیان کنم...
مشکل از آنجا است که enum های شما ورودی برای مقدار صفر ندارد در حالی که متغییر های مقدار دهی نشده اند و صفر هستند.
شما باید اول تکلیف خود را روشن کنید.
مقادیر enum شما میتواند صفر باشد یا نمیتواند؟
اگر صفر بودن مجاز است که ساختارهای را چنین اصلاح کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر صفر بودن مجاز نیست خوب چرا مقدار دو متغییر شما باید صفر باشد؟
مقدار pricetype و type را صراحتاً به مقداری مجاز از محدوده مجاز enum ست کنید.
=====
ضمناً خصوصیت system.serializable و system.nonserialized در کار xmlserializer بی تاثیر هستند و بود و نبودشان فرقی نمیکند، این صفات در binaryformatter و سایر مشتقاتش استفاده میشوند.
پیروز باشید.
ممنون استاد
ولی از اون لینک که استفاده کردم مشکلم حل شد
این رو هم تست میکنم ، اینطور به نظر میاد که اصولی تره :11:
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.