واضح آرشیو وب فارسی:سایت ریسک: bad_boy_200707-05-2009, 12:17 AMسلام دوستان من دارم چند تا از قسمتهای جدید برنامم رو با C# مینویسم ولی تا الان خیلی کم باهاش کد نوشتم میشه لطفا در مورد کدهای معادل زیر کمکم کنید ؟ یک چند تا سایت بود که معادل رو میداد ولی درست کار نمیکرد یا من نمیتونستم معادلش رو در بیارم !؟ معادل دستور چک کردن DBNull : کد VB رو اینطور مینوشتم : If NotISDBNull(Field) then ..... end if یکم سرچ زدم به کد زیر برای معادل #C رسیدم ولی بازم Eception میده که میخوای مقدار DBNull رو بخونم ! If(!Conversion.isdbnull(Field)) { .... } معادل دستور Val تو VB : مثلا قبلا تو VB وقتی میخواستم مقدار یک تکست باکس رو که ممکن بود "" هم باشه رو بخونم ، مینوشتم : Item=Val(textbox1.text) معادل C# رو پیدا کردم این بود : Microsoft.Visualbasic.val... و درست هم کار میکرد ولی فکر میکنم تو C# صحیح نباشه از این استفاد کنم !؟ kiuhnmgtrdcv07-05-2009, 12:11 PMبرنامه هایی وجود داره که کدای شما رو از vb به c# میبره در هر حال !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! _H2_07-05-2009, 12:40 PMسلام کلاس Microsoft.VisualBasic.Conversion در واقع کلاس اصلی است که همین متدهای VB 6 را برای VB.Net پیاده سازی میکند. ولی در کل پیشنهاد میکنم از سینتکسها استاندارد دات نت استفاده کنید. یعنی در خود VB.Net هم بهتر است دستورات قدیمی VB 6 را فراموش کنید. اینکار ضمن انکه اجازه برنامه نویسی با زبانهای دیگر را هم به شما میدهد، در اکثر مواقع بازدهی سرعتی بالاتری دارد. ===== در مورد دستور اولتان اینها معادلهای خالص دات نتی هستند. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ===== در مورد دستور دوم هم ... متدهای parse اصلی دات نت که وظیفه این تبدیل را بر عهده دارند در خود تیپ ها مستقر هستند و سر راست ترین معادل اینها هستند: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ضمناً در برنامه های عادی، پیشنهاد میکنم در گرفتن اعداد، به جای TextBox از کنترلر مخصوص NumericUpDown استفاده کنید. کنترلر فوق میتواند محدود Min و Max ای برای عدد مشخص کند و برای افزایش و کاهش با دکمه هایش میتواند پله ای مشخص کنید و ... ===== برای این نوع تبدیلات کلاس System.Convert هم بد نیست، البته اغلب متدهای این کلاس، متدهای اصلی را در جای دیگر فراخوانی میکنند و معادلهای دیگری دارند ولی بالاخره جمع و مجتمع کردن این متدها در یک کلاس واحد هم خودش به ذات ارزشمند است. موفق باشید. bad_boy_200707-05-2009, 11:06 PMسلام کلاس Microsoft.VisualBasic.Conversion در واقع کلاس اصلی است که همین متدهای VB 6 را برای VB.Net پیاده سازی میکند. ولی در کل پیشنهاد میکنم از سینتکسها استاندارد دات نت استفاده کنید. یعنی در خود VB.Net هم بهتر است دستورات قدیمی VB 6 را فراموش کنید. اینکار ضمن انکه اجازه برنامه نویسی با زبانهای دیگر را هم به شما میدهد، در اکثر مواقع بازدهی سرعتی بالاتری دارد. ===== در مورد دستور اولتان اینها معادلهای خالص دات نتی هستند. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ===== در مورد دستور دوم هم ... متدهای parse اصلی دات نت که وظیفه این تبدیل را بر عهده دارند در خود تیپ ها مستقر هستند و سر راست ترین معادل اینها هستند: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! ضمناً در برنامه های عادی، پیشنهاد میکنم در گرفتن اعداد، به جای TextBox از کنترلر مخصوص NumericUpDown استفاده کنید. کنترلر فوق میتواند محدود Min و Max ای برای عدد مشخص کند و برای افزایش و کاهش با دکمه هایش میتواند پله ای مشخص کنید و ... ===== برای این نوع تبدیلات کلاس System.Convert هم بد نیست، البته اغلب متدهای این کلاس، متدهای اصلی را در جای دیگر فراخوانی میکنند و معادلهای دیگری دارند ولی بالاخره جمع و مجتمع کردن این متدها در یک کلاس واحد هم خودش به ذات ارزشمند است. موفق باشید. سلام استاد ممنون از راهنمایی کاملتون :46: با این دستور مشکل دارم !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! درستور فوق اگه رشته تهی (در مورد اعداد رشته ای مشکل نداره) خطا میده ، خب حالا باید از همون تابع Val که تو فضای نام Microsoft.vb به نام Val بود استفاده کنم ؟ یا معادلش تو فضای نامهای دیگه هست ؟ مشکل با تابع Val از فضای نام قید شده رفع میشه فقط نمیدونم صحیحه که از فضای نام VB تو C# استفاده میکنم !؟ این کد رو نوشتم ولی باز هم Exception میده : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! http://i41.tinypic.com/ehymqa.jpg با Reflector یک DLL ویژوال بیسیک رو دکامپایل کردم دیدم که از فضای نام Microsoft.vb.information.isdbnull استفاده کرده که ظاهرا باید معادل System.conver.isdbnull باشه و تست هم کردم ولی باز هم خطا میده !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! _H2_08-05-2009, 01:47 PMسلام درستور فوق اگه رشته تهی (در مورد اعداد رشته ای مشکل نداره) خطا میده ، خب حالا باید از همون تابع Val که تو فضای نام Microsoft.vb به نام Val بود استفاده کنم این مطلب اصلاً و ابداً دلیل خوبی برای استفاده از توابع قدیمی مثل Val نیست، چه در C#.Net و چه در VB.Net . - شما به راحتی میتوانید با یک if حالت فوق را تشخیص دهید... - میتوانید با یک دستور Try تابع خودتان را بسازید! !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! - تازه دو مطلب فوق را گفتم تا بدانید همیشه راه حلی وجود دارد، ولی در این مورد شما میتوانید الز تابع TryParse استفاده کنید. TryParse هیچگاه خطا نمیدهد، اگر تبدیل کند، true برمیگرداند و اگر نتواند false اگر هم خیلی مشتاق تابع Val هستند، پیشنهاد میکنم کد زیر را به پروژه تان اضافه کنید. !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! اگر هم میخواهید ورودیتان فقط string نباشد: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! میتوانید هم هر دو کد فوق با ورودی string و object را با هم به برنامه تان اضافه کنید، با توجه به قابلیت overload و متفاوت بودن امضای دو تابع مشکلی پیش نمی آید. این کد رو نوشتم ولی باز هم Exception میده از شما بعید است! این حرفها را نزید! تا شب هم بنویسید، با هر تابعی هم بنویسید باز خطا میدهد!!!! عزیز جان ... شما دارید از TypedDataSet استفاده میکنید! اصلاً دقت کردید خروجی خصیصه PardakhtID چی است؟ احتمالاً خروجی اش int است!!!!! به نظر شما int میتواند null یا dbnull یا string یا object و... و... باشد؟؟؟؟؟ آیا خروجی PardakhtID هموراه فقط و فقط و الزاماً یک int نیست؟؟؟ لطفاً روی PardakhtID در پروزه خودتان راست کلیک کنید و فرمان Go To Definition بدهید... با دستوری مثل این روبرو خواهید شد: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! در PardakhtID که شما فراخوانی میکنید، یک تبدیل ضمنی اتفاق می افتد و بعد دیتای آماده و نوع دار (Typed) که در اینجا int است تحویل شما میشود. اگر فید مذکور نتواند به int تبدیل شود، اصلاً ذات فراخوانی PardakhtID به خطا خواهد خورد! کدهای صحیح: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! موفق باشید. bad_boy_200708-05-2009, 03:56 PMممنون استاد از وقتی که گذاشتین :11: در مورد اول از TryPars استفاده میکنم دو مورد دوم هم با دستور if (!dr.IsPardakhtIDNull()) str.PardakhtSTR.ID = dr.PardakhtID; مشکلم رفع شد باز هم ممنون خیلی خیلی کمک کردین :46: BabyBoy14-05-2009, 12:31 AMولي فكر مي كنم كه اگه برنامه ي Dot Net Reflector رو هم يه نگاهي بندازي بد نيست نرم افزارش كاملا رايگانه و از خود سايت Red Gate مي توني دانلودش كني سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 2422]