.NET Zip Component 1.0

سلام
قبلا یه کامپوننت برای مدیریت فایل‌های Zip گذاشته بودم که انصافا کارش عالی بود و خیلی مورد توجه دوستان قرار گرفت.
و خواسته بیشتر دوستان ارائه کامپوننتی برای NET. بود که همین کار رو انجام بده.
خب امروز یه کامپوننت در همین راستا معرفی میکنم که چیزی کم نداره.
برخی از قابلیت‌هاش اینه:


. فشرده‌سازی یک پوشه و همه زیر پوشه‌ها
. فشرده‌سازی داده‌های موجود در حافظه در فایل Zip
. ایجاد و استخراج یک فایل Zip‌ بطور مستقیم در حافظه
. استخراج فایل فشرده بطور مستقیم در حافظه بصورت آرایه بایتی یا رشته
. ساخت فایل‌های خوداستخراج بطور مستقیم (Exe) با ویزاد و بدون ویزارد برای کاربر
. انتخاب آیکون دلخواه برای فایل‌های خوداستخراج
. اعمال پسوورد در حین فشرده‌سازی
. تنظیم مسیر پیش‌فرض فایل‌های خوداستخراج در هنگام استخراج
. استخراج فایل‌ها از فایل Zip بر طبق الگوی خاص
. پشتیبانی از کدپیج یونی‌کد برای فایل‌ها
. امکان دسترسی به محتویات استخراج شده در حافظه بطور مستقیم
. پیمایش محتویات فایل‌های فشرده با متدهای ساده
. یکپارچه‌سازی چند فایل Zip درون یک فایل Exe و استخراج همه با هم
. خواندن و نوشتن توضیحات نوشته شده در فایل فشرده


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


تشخیص ادمین بودن کاربر جاری در ویندوز

سلام
نمیدونم برای شما این موضوع پیش اومده که بخواهید بدونید کاربر جاری ویندوز دسترسی ادمین رو داره یا نه. شاید اگر در حال ساخت ست‌آپ از نرم‌افزارتون باشید این برای شما اهمیت داشته باشه. بهرحال اگه زمانی خواستید این موضوع رو بفهمید کافیه که از تابع APIی که در shell32 تعریف شده استفاده کنید. صورت کلی این تابع چنین است:

Private Declare Function IsUserAnAdmin Lib "shell32" () As Long

تحت ویندوز ۲۰۰۰ ممکنه که شما خطایی با عنوان Can't find DLL entry point دریافت کنید که بهتر است که معرفی تابع را بدین گونه انجام دهید:

Private Declare Function IsUserAnAdmin Lib "shell32" Alias "#680" () As Long

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

معرفی ابزاری برای عبارات باقاعده

سلام دوستان
میدونم از خیلی وقت پیش اینجا ننوشتم و حالا بعد از مدتها غیبت دارم شروع میکنم.
راستش بد ندیدم که یه بخش جدیدی رو به فهرست اضافه کنم با عنوان ابزارهای‌برنامه‌نویسی که به معرفی کامپوننت‌ها و ابزارهای موردنیاز بپردازم.
خب میرم سراغ اولین ابزار.
برای من و شما بعنوان برنامه‌نویس، صحت ورود اطلاعات از سمت کاربر در بیشتر حالات از اهمیت ویژه‌ای برخوردار هست. یه نمونه ساده ورود آدرس پست‌الکترونیکی هست که باید بررسی‌های ویژه‌ای در اون گنجانده بشه. بعنوان مثال آدرسهای زیر همه صحیح هستند:

power@yahoo.com
power@ia.un.ir
power.station@yahoo.com

واقعا اگر قرار باشه حالات مختلف رو بررسی کنیم، راهش این نیست که به ازای هر حالت یه دستور شرطی رو بنویسیم. در این موارد میتونیم از عبارات باقاعده (Regular Expression) برای صحت یک ورودی استفاده کنیم.
ابزاری که در اینجا معرفی میکنم با عنوان MTrace‌ از شرکت RegExLab هست که یه محیط ساده و خیلی کارآمد رو در اختیار ما قرار میده تا عبارت با قاعده خودمون رو در اون تعریف کنیم و سپس تست کنیم که چه رشته‌هایی در این عبارت قابل پذیرش خواهد بود.
و جالب تر اینکه سورس همین عبارت رو با زبان‌های چون جاوا، وی‌بی، سی++ و سی‌شارپ ارائه میده که فقط باید کپی کنید و در برنامه خودتون قرار بدید.
برای نمونه یک عبارت باقاعده که صحت آدرس ایمیل رو نشون میده به این قرار هست:

^[a-zA-Z][w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][w.-]*[a-zA-Z0-9].[a-zA-Z][a-zA-Z.]*[a-zA-Z]$

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

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

using System.Text.RegularExpressions;

// regular expression object
Regex re = new Regex(@"^[a-zA-Z][w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][w.-]*[a-zA-Z0-9].[a-zA-Z][a-zA-Z.]*[a-zA-Z]$");

// Match object
Match m = re.Match("your string");

// found or not
if( m.Success )
{
    // found
}
else
{
    // not found
}

منتظر ابزارهای بعدی باشید.