تبلیغات
banner
banner
banner
تبلیغات
banner

فیلم های آموزشی : 36 +

تعداد کاربران : 34 +

تعداد کل مطالب : 338 +

تعداد نظرات : 29 +

حضرت علی (ع): هر چیزی زکات دارد ، و زکات علم نشر آن است!

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و چهلم


به نام پروردگار جهان

آموزش مقدماتی تا پیشرفته سی شارپ بخش صد و چهلم

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

قسمت صد و صد و چهلم


چگونه كار مي كند؟

تنها نكته ي مهمي كه در اين كلاس قرار دارد اين است كه اين كلاس چگونه هنگام فراخواني متد Load اطلاعات داخل خود را
پر مي كند؟

در ابتداي اين متد بايد متغيير هاي مورد نياز در متد را تعريف كنيم .

يك متغير به نام strData ايجاد كـرده و تمـام محتويـات فايلي كه در حال بررسي است را در آن قرار مي دهيم (هر فايلي كه مشخص كننده يكي از گزينه هاي منوي Favorites در اينترنت اكسپلورر است، در حقيقت يك فايل متني است كه محتويات آن با ويرايشگري مانند notepad نيز قابل مشاهده است .

پس مي توانيم در برنامه محتويات آن فايل را خوانده و در يك متغير رشته اي قرار دهـيم.

همچنـين يـك آرايـه رشـته اي بـه نـام strLines تعريف كرده و هر خط از اطلاعات متغير strData را در يك عنصر از آن قرار مي دهيم .

در آخـر هـم يـك شيئ از كلاس FileInfo ايجاد مي كنيم تا به اطلاعات كامل فايلي كه نام و آدرس آن به متد فرستاده مـي شـود دسترسـي داشته باشيم .

همانطور كه در فولدر Favorites م شاهده كرديد، نام هر فايل برابر با نام گزينه اي است كـه در ليـست Favorites اينترنت اكسپلورر نمايش داده مي شود مانند Radio Station Guide .

بنابراين مي توانيم از نام فايل بـراي تنظـيم خاصيت Name در كلاس استفاده كنيم .

البته پارامتر FileName كه به كلاس فرستاده مي شو د حـاوي آدرس كامـل فايـل اســت كــه شــامل آدرس فايــل، نــام فايــل و پــسوند فايــل مــي شــود (بــراي مثــال C:\Users\sajjad\Favorites  )كاري كه بايد انجام دهيم اين است كه نام فايل را از اين رشته جدا كرده و در فيلد Name قرار دهيم .

براي اين كار مي توانيم از كلاس FileInfo استفاده كنيم .

ابتدا شيئ اي از اين كلاس به نام objFileInfo ايجـاد مي كنيم و هنگام نمونه سازي آن، آدرس فايل مورد نظر را كه در FileName قرار دارد به عنوان پارامتر به تابع سازنده كلاس FileInfo مي فرستيم .

حال به وسيله اين شيئ مي توانيم به اطلاعات مختلف فايـل از قبيـل نـام و يـا آدرس آن دسترسـي داشته باشيم .

يكي از خاصيت هاي شيئ objFileInfo ،خاصيت Name است كه بـه وسـيله آن مـي تـوانيم بـه نـام و پـسوند فايـل دسترســي پيــدا كنــيم  در اين قسمت نيز از اين خاصيت استفاده كرده و نام و پسوند فايل را بدست مي آوريم، سپس با استفاده از متد SubString نام فايل را از پسوند آن جدا مي كنيم .

براي اين كار بايد دو پارامتر را براي متد Substring مشخص كنيم .

پارامتر اول از اين متد انديس شروع كاراكتر ها است .

در اينجا نام فايل از كاراكتر اول شروع مي شود، پس انديس شروع را صفر در نظر مي گيريم.

پارامتر دوم تعداد كاراكتر هايي است كـه بايد از رشته جدا شوند .

براي اينكه فقط نام فايل را بدست آوريم بايد اين پارامتر را به صورت “طول كل رشته منهـاي طـول پـسوند آن” وارد كنيم .

حال بايد محتويات فايل را خوانده و در متغيير strData قرار دهيم .

براي اين كار مي توانيم از متد ReadAllText در كلاس System.File استفاده كنيم .

اين متد فايل مورد نظر را باز مي كند، تمام محتويات داخل آن را درون متغير مشخص شده قرار مي دهد، فايل را مي بندد و منابع گرفته شده به وسيله آن را نيز آزاد مي كند .

بعد از اين كه كد بالا توسط برنامه اجرا شد، متغير strData داراي متني مشابه مـتن زيـر خواهـد بـود .

ايـن مـتن مربـوط بـه محتويات فايل Markup Extensible  Language.url است .

اما كار با اين اطلاعات به صورتي كه در اين متغيير قرار گرفته است كمي مشكل است .

براي راحتي كار بهتر است آرايه اي رشته اي ايجاد كرده و هر خط از اين اطلاعات را درون يكي از عناصر آن قرار دهيم .

براي اين كار مـي تـوانيم از متـد Split در كـلاس String استفاده كنيم .

از متد Split چندين نسخه سربار گذاري شده است .

نسخه اي كه در اين قسمت از آن استفاده مي كنيم كاراكتر هايي كه بايد به عنوان جدا كننده در نظر گرفته شوند را به عنوان پارامتر دريافت مي كند .

همانطور كه در بخشهاي قبلي نيز گفتم كاراكتر كنترلي ‘n ‘\در #C براي مشخص كردن خط جديد به كار مي رود.

در اينجا نيز براي اين كه مشخص كنيم متن داخل strData يا محتويات فايلي كه خوانده شده بايد بر اساس خط جديد جـدا شـون د ايـن كاراكتر را به عنوان جدا كننده به متد Split مي فرستيم .

بعد از اجراي اين خط از برنامه، هر يك از خطوط فايل مورد بررسي، در يكي از عناصـر آرايـه ي strLines قـرار مـي گيـرد .

سپس بايد با استفاده از يك حلقه ي foreach عناصر آرايه ي strLines را بررسي كنيم تـا بـه خطـي برسـيم كـه بـا عبارت “=URL “شروع شود .

براي تشخيص اينكه يك متغير رشته اي با عبارت خاصي شروع مي شود يا نه مـي تـوانيم از متـد StartsWith در كلاس String استفاده كنيم .

اين متد يك عبارت را دريافت مي كند و يك مقـدار Boolean را برمي گرداند .

اگر اين مقدار برابر با true بود به اين معني است كه رشته ي مورد نظر با عبارت مشخص شـده شـروع مـي شـود .

پس مي توانيم نتيجه ي برگشتي از اين متد را با استفاده از يك دستور if بررسي كنيم .

اگر خطي كه در حال بررسي آن هستيم با عبارت “=URL “شروع شود، يعني آدرس مورد نظر ما كـه بايـد در فيلـد Url قـرار گيرد در اين خط قرار دارد.

پس با استفاده از متد Substring ،آن را بدست آورده و در فيلد url قرار مي دهـيم .

بـه علـت اينكه چهار كاراكتر اولي خط (كاراكتر هاي ۰ تا  ۳)  محتوي عبارت “=URL “هستند، پس به تابع Substring مي گـوييم كه از كاراكتر پنجم تا انتهاي رشته را برگرداند و در فيلد Url قرار دهد .

بررسي بقيه عناصر آرايه نيز كار بيهوده اي است، زيرا خط مورد نظرمان را پيدا كرده ايم .

پس با استفاده از دستور break از حلقـه ي foreach خارج مي شويم.

ادامه آموزش را در قسمت صد و چهل و یکم ببینید.


درباره نویسنده
سجاد اسدی
   سجاد اسدی

سجاد اسدی هستم دانشجوی رشته نرم افزار و علاقه مند به تدریس و یادگیری دروس مرتبط با تکنولوژی نرم افزار و اینترنت اشیاء جهت ارتباط با بنده مراجعه شود به آیدی سروش و تلگرام : @ordervira و پیج بنده در اینستاگرام instagram.com/sajjadred11 ""اللهم صل علی محمد و آل محمد"" برای شروع هیچ وقت دیر نیست. "الهم عجل لولیک الفرج"

دیدگاه بگذارید

avatar
  اشتراک  
اطلاع رسانی

aparat کانال آپارات

soroush کانال سروش

کانال آی گپ