Programimng

مطالبی از آموخته های من

Programimng

مطالبی از آموخته های من

جمع اعداد صحیح بزرگ در سی شارپ

این برنامه دو عدد بزرگ را بدون استفاده از آرایه و با ساده ترین روش ممکن با هم جمع میکند .


دانلود سورس جمع دو عدد بزرگ در سی شارپ
حجم: 33.4 کیلوبایت

بازی دوز ( XO ) با سی شارپ در Console Application



سورس بازی دوز را در کنسول سی شارپ جهت دانلود قرار داده ام .

این بازی به صورت دو نفره انجام میشود و به خوبی شیوه پیاده سازی سیستم نوبتی بازیکنان و ... را نمایش میدهد.


چند وقت پیش با آپدیت شدن ویندوزم , فولدرهام مشکل پیدا کردن و وقتی دابل کلیک میکردم این پیغام را نشان میدادند:

This file doesn't have a program associated with it for performing this action, Please install a program or, if one is already installed, create an association in the Default Programs control panel

بعد از جستجوی زیاد و پرس و جو به این راه حل رسیدم :


در منوی start گزینه run را انتخاب کرده و تایپ کنید regedit تا وارد رجیستری ویندوز شوید . سپس مسیر زیر را در رجیستری دنبال کنید :

HKEY_CLASSES_ROOT\Directory\shell

در قسمت سمت راست default را انتخاب و روی آن کلیک راست کرده modify را انتخاب کنید و به جای کلمه ای که در زیر value data نوشته شده none را بنویسید.

حالا مشکل رفع شده و فولدرها با دابل کلیک باز میشوند .

رفع مشکل WampServer

ومپ یا WAMP مخفف کلمات Windows ، Apache ، MySQL ، PHP و Perl می باشد و همانطور که از نامش پیداست یعنی بستری برای شما فراهم می کند که بتوانید به یکباره و بدون نیاز به انجام تنظیمات جانبی ، تمامی سرویس های ذکر شده را بر روی سیستم عامل ویندوز بصورت یکجا نصب و راه اندازی کنید .در واقع این نرم افزار یک شبیه ساز وب سرور و تمامی مخلفات لینوکسی آن در ویندوز می باشد . 

من برای کار کردن با جوملا به این برنامه نیاز داشتم  ولی متاسفانه هر کاری میکردم این برنامه اجرا نمی شد(آیکون برنامه زرد رنگ بود ) که بلاخره راه حل های زیادی رو امتحان کردم که تونست مشکلمو حل کنه که من هم این راه حل ها را اینجا قرار میدهم که امیدوارم کسانی که این مشکل را دارند مشکلشون حل شود .

بعد از نصب wamp  و اجرا آن سه حالت ممکن است ایجاد شود :

1.      اگر آیکون برنامه سبز باشد برنامه به درستی نصب شده است.

2.      اگر آیکون قرمز باشد برنامه پیکر بندی نشده و باید مجدد نصب شود .

3.      اگر زرد باشد یعنی یکی از قسمت های برنامه نمیتواند راه اندازی شود  . یعنی یکی از قسمتهای برنامه  در حالت استارت قرار نگرفته است این اشکال زمانی رخ میدهد که پورتی که این برنامه از آن استفاده میکند توسط برنامه های دیگر اشغال شده باشد بنابراین برنامه توانایی اجرا را نخواهد داشت .



راه حل های رفع این مشکل :


راه حل اول :

   گاهی فعال بودن IIS باعث ایجاد این مشکل میشود بنابراین IIS را غیر فعال کنید .

control Panel >>> program and features >>>turn windows features on or off >>> 

        غیر فعال کردن Internet Information Services

        در سیستم ترای  بر روی wamp server کلیک کنید و restart all services را انتخاب کنید تا برنامه ریست شود.

گاهی اوقات لازم است برای افزایش دقت عدد وارد شده را به صورت سه رقم سه رقم جدا کنیم .

میخواهیم وقتی کاربر عدد را textBox وارد کرد و از آن خارج شد عدد به صورت سه رقم سه رقم جدا شده باشد . بدین منظور باید در رویداد Leave آن textBox کد زیر  را بنویسم :


textBox1.Text = Convert.ToInt32(textBox1.Text).ToString("n0");


چون ماهیت textBox از نوع رشته ای می باشد در انتهای عبارت ToString را قرار دادیم و از آرگومان ورودی n0 استفاده کرده ایم که این فرمت عدد را به صورت سه رقم سه رقم جدا میکند , اما مشکلی که وجود دارد این است اگر بعد از اینکه عدد را در textBox وارد کردیم بخواهیم یک رقم از عدد وارد شده را حذف کنیم بعد از این که رقم مورد نظر حذف شد و از textBox خارج شدیم  با خطای format exception مواجه میشویم .چون عبارت درون textBox به یک رشته تبدیل شده و به عنوان عدد شناخته نمیشود برای رفع این مشکل کد را به صورت زیر تغییر میدهیم :


 textBox1.Text = Convert.ToInt32(textBox1.Text.Replace(",","")).ToString("n0");


دستور Replace کامای تفکیک کننده ارقام را برداشته و مجدد عدد را به صورت سه رقم سه رقم تفکیک میکند .




برای اینکه بخواهیم فولدرها در همان پنجره windows Explorer باز شوند مراحل زیر را انجام میدهیم :

1. در استارت و از قسمت سرچ باکس عبارت regedit رو سرچ و اجرا کنید .

2. سپس به این مسیر می رویم 
HKEY_CLASSES_ROOT\Directory\shell\Bridge


3. فولدر bridge را حذف میکنیم .

با استفاده از این پروسیجر تمام ویو های خود را می توان پاک کرد .

(DECLARE @name VARCHAR(128

(DECLARE @SQL VARCHAR(254

([SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name

WHILE @name IS NOT NULL

BEGIN

   '[' +(SELECT @SQL = 'DROP VIEW [dbo].[' + RTRIM(@name

   (EXEC (@SQL

    PRINT 'Dropped View: ' + @name

    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])

END

GO

بعضی اوقات  که میخواهیم کل پروسیجرهامون رو از تو دیتابیس پاک کنیم ممکن است زمان بر باشه برای همین با استفاده از پروسیجر زیر به راحتی می توانیم این کار را انجام بدیم که تمام پروسیجرها را یک دفعه پاک میکند . فقط کافی هست پروسیجر زیر را در دیتابیسی که می خواهیم پروسیجرهاش پاک بشه بنویسیم و اجراش بکنیم . 

در قسمت database name نام دیتابیس مورد نظر را وارد می کنیم .

در قسمت proc name یک نام به این پروسیجر نوشته شده می دهیم و ذخیره می کنیم .

USE [database name]

GO

CREATE PROCEDURE [proc name]

AS 

DECLARE @name VARCHAR(128)

DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 ORDER BY [name])

WHILE @name is not null

BEGIN

    SELECT @SQL = 'DROP PROCEDURE [dbo].[' + RTRIM(@name) +']'

    EXEC (@SQL)

    PRINT 'Dropped Procedure: ' + @name

    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'P' AND category = 0 AND [name] > @name ORDER BY [name])

END

GO

عدم نمایش تصویر پس زمینه فرم

داشتم روی یک پروژه ای کار میکرد که به ی مشکلی برخوردم گفتم اینجا قرار بدم شاید کسی هم به این مشکل برخورد کرد :

من یک فرم درست کردم و برای پس زمینه یک تصویر قرار دادم (در BackGroundImage) بعد رفتم RightToLeft=yes و RightToLeftLayot=True قرار دادم بعد دیدم دیگه تصویر پس زمینه نشان داده نمیشود بعد از جستجو فهمیدم که وقتی هم RightToLeft و RightToLeftLayot هر دو از راست به چپ میشوند تصویر نشان داده نمیشود و وقتی یکی از اینها فقط راست به چپ هست تصویر نشان داده میشود . حالا من برای رفع مشکلم از PictureBox استفاده کردم و خاصیت Dock رو برابر Fill قرار میدهیم تا تمام صفحه را بپوشاندو برای نشان دادن تصویر از آن استفاده کردم .

گاهی اوقات به دلایل متعددی شما ممکن است نیاز به دسترسی به اطلاعات سخت افزاری سیستم داشته باشید . یک نمونه که اطلاعات سخت افزاری مورد استفاده قرار  می گیرد زمانی هست که شما یک نرم افزار ایجاد کرده اند و می خواهید قفل بر روی نرم افزار قرار بدهید .

ابتدا باید کتابخانه ی

System.Management را به پروژه اضافه کنیم .( برای این کار در پنجره Solution Explorer روی References راست کلیک میکنیم گزینه Add Reference را انتخاب میکنیم .در تب NET . گزینه

برای نوشتن این تکه کد در زبان سی شارپ ابتدا باید using System.Management رو به ابتدای کد اضافه کنیم .

برای بدست آوردن اطلاعات مربوط به سخت افزار شما نیاز به ایجاد یک شی از کلاس ManagementObjectSearcher دارید .

کار این کلاس بازیابی مجموعه ای از اشیا مدیریتی مبتنی بر پرس و جو مشخص است که برای بازیابی اطلاعات مدیریت استفاده میشود .

ManagementObjectSearcher searcher = new ManagementObjectSearcher(
    "select * from " + Key);

key در کد بالا یک متغیر است که میتواند با داده های مناسب جایگزین شود . مثلا برای بدست آوردن ID پردازنده باید Win32_processor را جایگزین Key کنیم .(  لیست کامل Key ها را در ادامه مطلب قرار میدهم .)

سپس نیاز به یک حلقه Foreach داریم که با استفاده از متد GET شی رو با اطلاعات مورد نیازش پر بکنه :

foreach (ManagementObject share in searcher.Get())
{
// Some Codes ...

}


نمونه کد برای بازیابی ID Processor :

ManagementObjectSearcher mbs = new ManagementObjectSearcher

;("Select * From Win32_processor" )

            ;""=string cpu 

        ( ()foreach (ManagementObject mo in mbs.Get

            }

            ;() cpu = mo["ProcessorID"].ToString

            {

MessageBox.show(Cpu(;

نحوه Attach کردن DataBase به Sql Server با استفاده از sqlcmd

برای اتچ کردن دیتابیس به Sql Server ابتدا یک  فایل sql  میسازیم (یک فایل NotePad ایجاد میکنیم با پسوند Sql ذخیره میکنیم .) و دستورات زیر را داخلش مینویسیم :

USE Master
Go
CREATE DATABASE databaseName ON
(FILENAME =' C:\ آدرس فایل \mdffilename.MDF'),
(FILENAME =' C:\ آدرس فایل \logfilename.LDF ')
FOR ATTACH;
GO

سپس یک فایل BATCH ایجاد میکنیم و دستور زیر را داخلش مینویسیم و با یک اسمی ذخیره میکنیم :

sqlcmd -S  ServerName\InstanceName   - i آدرس فایل Sql ساخته شده در بالا 


با اجرای فایل bat دیتابیس به Sql Server مورد نظر Attach میشود . 

برای نصب Sql Server 2008 R2 بصورت Silent در سیستم 32 بیتی دقیقا باید همان مراحلی که برای سیستم های 64 بیتی انجام میشود را طی کرد یعنی ابتدا Setup.exe را اجرا کرد تا ساخت ConfigurationFile سپس تغییراتی که باید در ConfigurationFile  اعمال کرد را انجام داد و سپس ساخت فایل bat و اجرای آن .

تنها تفاوتی که ConfigurationFile در سیستمهای 32 بیتی و 64 بیتی دارند این است که 

INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server" در 32 بیتها وجود ندارد . 


نحوه تعیین 64 یا 32 بیتی بودن سیستم عامل

برای اینکه تعیین کنیم سیستم 32 یا 64 بیتی است ساده ترین راه این است که یک برنامه ای بنویسیم که بره چک کنه تو درایوری که ویندوز نصب است فولدر (Program File(x86 وجود داره یا نه ؟ اگر چنین فولدری وجود داشت یعنی سیستم 64 بیتی است ولی اگر فقط فولدر Program File وجود داشت یعنی سیستم 32 بیتی است !!! 

برنامه تشخیص نصب Net Framework . روی سیستم


برنامه ای که با Batch File نوشته شده که بررسی میکنه آیا سیستم net framework. دارد یا نه در صورت نداشتن ابتدا Net . را نصب مبکنه با توجه به آدرسی که فایل  exe در آن قرار دارد  و بعد از آن برنامه موردنظرمون رو اجرا میکنه و در صورت داشتن Net. یک راست به سراغ نصب برنامه مورد نظرمون میره .

@echo off
echo.
if exist " %windir%\microsoft.net\framework\v3.5"   goto a
if not exist  "%windir%\microsoft.net\framework\v3.5" goto b

:a
echo Installing Your Program.
echo.
آدرس فایل اجرایی که برنامه مورد نظر آنجا قرار دارد 
pause
exit

:b
echo Installing .net.
echo.
آدرس فایل اجرایی برنامه دات نت 
آدرس فایل اجرایی که برنامه مورد نظر آنجا قرار دارد .
pause
exit


توجه : آدرس ها باید داخل "" قرار بگیرند .