امین مهدی نژاد 2,141 ارسال شده در 13 شهریور، ۱۳۹۶ اشتراک گذاری ارسال شده در 13 شهریور، ۱۳۹۶ نسخه جدید بیسیک فور اندروید اون هم با استفاده از نسخه 8 جاوا و قابلیت های کاربردی فراوان ارائه شده است قابلیت های افزوده شده در این ورژن بیسیک قالبا راه حل مشکل بسیاری از سوالات دوستانی که در همین انجمن هم پرسیده بودند می باشد. بر همین اساس بر آن شدیم تا توضیح جامعی البته بتدریج درباره این قابلیت ها بیان کنیم. Sleep Sleep قابلیت ساده و کاربردی در برنامه نویسی با ورژن جدید بیسیک خواهد بود. کاربرد این دستور توقف اجرای کدها در مدت زمان دلخواه می باشد مثال اول اسپلش رو اکثر بچه ها طراحی کردن. خب در روش مرسوم با استفاده از تایمر زمان ورود به اکتیویتی دوم مشخص میشد. ولی حالا خیلی سریع و ساده همانند کد زیر ساخته می شود Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("Layout1") Sleep(3000) StartActivity("Menu") Activity.Finish End Sub در کد بالا بعد از سه ثانیه یا همون 3000 میلی ثانیه از زمان نمایش اسپلش اکتیویتی دوم نمایش داده میشود. مثال دوم اجرای رویداد بعد از زمان خاصی همیشه از سوالات دوستان بوده. مثلا با کلیک شدن یک دکمه افکت صوتی اجرا و با پایان اون دستورات مربوط به کلیک شدن اجرا بشوند.افکت های مختلف و زیبایی مثلا اجرای انیمیشن ها. و افکت های تصویری و صوتی فراوانی میشه براحتی به برنامه خودتان بسادگی اضافه کنید. کد زیر کد رویداد این کلیک ها می باشد. Sub btn_Action Dim b As Button = Sender For i = 10 To 0 Step - 1 b.Text = i Sleep(100) Next b.Text = "Takeoff!" End Sub نکته: همانگونه که در مثال های بالا مشاهده نمودید استفاده از Sleep در مواردی که یک یا چند مکث با تعداد مشخص و یا تعداد کم داشته باشید. کاربرد دارد و در غیر اینصورت استفاده از تایمر همانند قدیم مناسبتر می باشد. قابلیت های دیگر در ادامه توسط من یا آقای آرتا در ادامه همین توضیحات بیان خواهند شد. «موفق باشید.» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
مجید آرتا 5,874 ارسال شده در 14 شهریور، ۱۳۹۶ اشتراک گذاری ارسال شده در 14 شهریور، ۱۳۹۶ قابلیت Wait For: در این قابلیت ما می تونیم تمامی رویداد هارو در کنار کدی که می نویسیم داشته باشیم.یعنی دیگه نیازی نیست شما به صورت جداگانه برید رویداد مثلا JobDone رو تعریف کنید.به وسیله WaitFor هر جای ادیتور و در بلاک های مختلف می تونید رویداد هاتون رو صدا بزنید و کنترل کنید. مزایای Wait For: - نظم بهتر به کد نویسی - جلوگیری از تداخل در رویداد ها ( بر فرض هندل راحت دو تا Job بدون اینکه برای هیچ کدوم تداخلی بوجود بیاد ) خب با مثال میریم جلو تا واستون قابل درک باشه. مثال اولش رو واسه SQL میزنیم، تا ببینیم به چ شکل عمل می کنه» - اضافه کردن رکورد به دیتابیس و خروجی که رویدادش به ما بر میگردونه: For i = 1 To 1000 sql.AddNonQueryToBatch("INSERT INTO table1 VALUES (?)", Array(Rnd(0, 100000))) Next Dim SenderFilter As Object = sql.ExecNonQueryBatch("SQL") Wait For (SenderFilter) SQL_NonQueryComplete (Success As Boolean) Log("NonQuery: " & Success) نکته: ما از توابعی استفاده می کنیم که بعد از اجرای اونها رویدادی رخ بده ( توابعی که رویداد هایی برای آن ها تعریف شده ) حالا اینجا ما تابع AddNonQueryToBatch رو داریم که می تونیم اطلاعات رو درج کنیم.اطلاعات رو به وسیله این تابع وارد و با اجرای تابع ExecNonQueryBatch اطلاعات درج در دیتابیس می شوند.برای اینکه از وضعیت درج اطلاعات با خبر شویم، رویدادی رو اختصاص دادند.این رویداد یک متغییر از نوع Boolean داره که مشخص می کنه اطلاعات با موفقیت به دیتابیس وارد شده اند یا خیر. به راحتی تونستیم به جای اینکه رویداد SQL_NonQueryComplete رو جدا تعریف کنیم، دقیقا بعد از کدی که واسش تعریف شده نوشتیم.دقیقا توی جاوا به همین شکل می تونید عمل کنید. می تونید رویداد رو هرجای کد تعریف کنید. مثال از گرفتن اطلاعات از دیتابیس » Dim SenderFilter As Object = sql.ExecQueryAsync("SQL", "SELECT * FROM table1", Null) Wait For (SenderFilter) SQL_QueryComplete (Success As Boolean, rs As ResultSet) If Success Then Do While rs.NextRow Log(rs.GetInt2(0)) Loop rs.Close Else Log(LastException) End If خب فک نکنم پیچیدگی یا ابهامی توی این کد باشه.کوئری رو به تابع میدید و بعدش میایید توی رویدادش اطلاعات رو دریافت می کنید.در صورتی که مشکلی نباشه.اینجا هندل کردن خطاها خیلی بهتر شده.یعنی کد اجرا میشه و متغییر Success بهمون این اجازه رو میده تا خطایی در برناممون رخ نده و کنترلی داشته باشه.در مورد ResultSet هم بگم که جای نگرانی نداره و چیز جدیدی نیست، همون Cursor هستش.مشتق شده از Cursor هستش.( جزئی از شی گرایی هستش که هر شیی از یک شیی دیگه مشتق بشه تمامی وِِِیژگی ها و قابلیت های والدش رو به ارث میبره). توی پست بعدی در مورد استفادش در دانلود فایل ها و کنترل کردن رویداد هایی مثل JobDone در خدمتتون هستیم. لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
مجید آرتا 5,874 ارسال شده در 14 شهریور، ۱۳۹۶ اشتراک گذاری ارسال شده در 14 شهریور، ۱۳۹۶ قابلیت Wait For: مثالی از استفادش در OkHttpUtils2 » Dim j As HttpJob j.Initialize("", Me) j.Download("https://www.google.com") Wait For (j) JobDone(j As HttpJob) If j.Success Then Log(j.GetString) End If j.Release ساده ترین مثال ممکن لینک رو میدی بهش، رویداد رو در کنارش اضافه می کنی و نتیجه رو لاگ می کنید سخته واقعا ؟؟!! مثال بعدی » Sub DownloadQuote Dim j As HttpJob j.Initialize("", Me) 'name is empty as it is no longer needed j.Download("http://quotesondesign.com/wp-json/posts?filter[orderby]=rand") Wait For (j) JobDone(j As HttpJob) If j.Success Then 'The result is a json string. We parse it and log the fields. Dim jp As JSONParser jp.Initialize(j.GetString) Dim quotes As List = jp.NextArray For Each quot As Map In quotes Log("Title: " & quot.Get("title")) Log("Content: " & quot.Get("content")) Next End If j.Release End Sub خب اینم میاد یه سری پست رو به صورت جیسون میگیره و پردازش می کنه.عمل دانلود انجام میشه اگه موفقیت امیز بود مقادیرش رو میگیره و میریزه داخل شی جیسون.دیگه ادامش چیز جدیدی نداره. استفاده از کد بالا هم فقط کافیه تابع DownloadQuote رو یه جایی صدا بزنید. مثال بعدی » Sub DownloadTwoLinks Dim j As HttpJob j.Initialize("", Me) 'name is empty as it is no longer needed j.Download("https://www.google.com") Wait For (j) JobDone(j As HttpJob) If j.Success Then Log(j.GetString) End If j.Release 'second request Dim j As HttpJob 'redim and initialize j.Initialize("", Me) j.Download("https://www.duckduckgo.com") Wait For (j) JobDone(j As HttpJob) If j.Success Then Log(j.GetString) End If j.Release End Sub خب اینجا هم دو تا لینک رو میدیم بهش تا دانلود کنه واسمون.هر جای کد واستون نا مفهوم بود، کد رو خودتون تست کنید و ببینید به چ شکل عمل می کنه.می تونید با Log گذاشتن نحوه عملکردش رو ببینید. مثال بعدی » Sub Activity_Create(FirstTime As Boolean) DownloadMany(Array("http://www.google.com", "http://duckduckgo.com", "http://bing.com")) End Sub Sub DownloadMany (links As List) For Each link As String In links Dim j As HttpJob j.Initialize("", Me) 'name is empty as it is no longer needed j.Download(link) Wait For (j) JobDone(j As HttpJob) If j.Success Then Log("Current link: " & link) Log(j.GetString) End If j.Release Next End Su دانلود محتوای سایت ها.خیلی شیک و معمولی. مثال بعدی » Sub DownloadImage(Link As String, iv As ImageView) Dim j As HttpJob j.Initialize("", Me) j.Download(Link) Wait For (j) JobDone(j As HttpJob) If j.Success Then iv.Bitmap = j.GetBitmap End If j.Release End Sub دانلود عکس و قرار دادنش توی ایمیج ویو، نحوه استفادش: Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("1") DownloadImage("https://b4x-4c17.kxcdn.com/android/forum/data/avatars/m/0/1.jpg?1469350209", ImageView1) DownloadImage("https://b4x-4c17.kxcdn.com/images3/code.png", ImageView2) End Sub کافیه یا بازم مثال بدم ؟؟ این نحوه ی استفاده از قابلیت Wait For هستش تا واسه ی شما جا بیوفته. با این می تونید رویداد هاتون رو هرجا که خواستید تعریف و کنترل کنید. پیروز باشید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
arf 30 ارسال شده در 12 اسفند، ۱۳۹۶ اشتراک گذاری ارسال شده در 12 اسفند، ۱۳۹۶ سلام من از این کد استفاده کردم ولی ارور می ده: Sub chek_phone(ID As String,phone As String) As Boolean Dim s As String s="ID="&ID&"&phone="&phone ht.PostString("http://tolugroup.ir/far/chek_phone.php",s) Wait For (ht) Jobdone(ht As HttpJob) End Sub تصویر ارور: لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
vistamobile 1,700 ارسال شده در 12 اسفند، ۱۳۹۶ اشتراک گذاری ارسال شده در 12 اسفند، ۱۳۹۶ در 8 دقیقه قبل، arf گفته است : سلام من از این کد استفاده کردم ولی ارور می ده: Sub chek_phone(ID As String,phone As String) As Boolean Dim s As String s="ID="&ID&"&phone="&phone ht.PostString("http://tolugroup.ir/far/chek_phone.php",s) Wait For (ht) Jobdone(ht As HttpJob) End Sub تصویر ارور: سلام داداش تایپک قدیمی آموزشی رو بالا آوردی سوال پرسیدی؟ تایپک جداگانه بزن. موفق باشید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
نورنما 613 ارسال شده در 21 آذر، ۱۳۹۷ اشتراک گذاری ارسال شده در 21 آذر، ۱۳۹۷ در در 1396/06/14, 11:24:20، مجید آرتا گفته است : قابلیت Wait For: سلام خدمت همه دوستان انجمن انسر سنتر * یک نکته خاصی در Wait For هست که باید بهش دقت داشت و آنهم اینکه وقتی از این دستور استفاده میکنید ، برنامه صبر میکند تا جواب شرط اتصال یا عدم اتصال را دریافت کند ! ولذا اگر بلافاصله به اکتیویتی دیگری وارد شوید، متاسفانه موقع دریافت اتصال از اینترنت، خودکار کاربر را به اکتیویتی قبل منتقل میشود وبازگشت به عقب اتفاق افتاده و Sub Activity_Resume متعلق به اکتیویتی قبل که دستور Wait For در آن وجود دارد دوباره اجرا میشود وخلاصه کدهاتون مختل میشه لذا هردستوری که داریدخصوصا انتقال به اکتیویتی بعد که قراره بعداز اتصال یا عدم اتصال اجرا بشود را حتما سعی کنید داخل بخش شرط ها مثل نمونه زیر قرار بدین ونه خارج از شرط وزیر دستور شرط Dim j As HttpJob j.Initialize("", Me) j.Download("https://www.xxx.com") Wait For (j) JobDone(j As HttpJob) If j.Success Then 'درصورت اتصال موفق Log(j.GetString) StartActivity("1") else'درصورت عدم اتصال موفق StartActivity("1") End If j.Release لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.