سلام
فرض کنید یک رشته دارید به نام dbname که توش مسیر بانک اطلاعاتی برنامه نوشته میشه، حالا قراره قفل رو چک کنید
طبق حالت فعلی مینویسید
if text1 = code then
.
'کدهای اجرای برنامه
.
به جاش این کد ها رو بنویسید
Dim db$, p%, L%
db = App.Path & "\test.mdb"
L = Abs(Len(text1) - Len(code))
p = InStr(code, text1)
dbname = Mid$(db, 1 + L, 1000 * p)
اتفاقی که میفته اینه :
db برابر نام و مسیر دیتابیس میشه
اختلاف طول کد وارد شده توسط کاربر و طول کد صحیح در متغیر L ذخیره میشه
اگر کد وارد شده کاربر برابر متغیر Code یعنی کد صحیح باشه مقدار p برابر 1 و در غیر اینصورت برابر 0 میشه، دقت کنید اینکار بدون دستور شرطی انجام شده
اگر مقدار وارد شده در textbox برابر code نباشه p=0 میشه و تابع mid رشته پوچ رو برمیگردونه چون عدد 1000 * 0 میشه صفر و این یعنی متغیر dbname برابر پوچ میشه
از طرفی اگر طول text برابر طول کد نباشه تابع mid رشته حاوی دیتابیس رو از وسطش برش میده
در هر صورت ما بدون استفاده از دستور if تونستیم رشته حاوی نام دیتابیس برنامه رو تخریب کنیم و حتی دیگه نیاز به دادن پیام برای کد اشتباه هم نداریم (در عمل هم به شدت توصیه میشه همچین پیامی ندین چون کمک بزرگی به ک.رکر میکنید)
وقتی که رشته حاوی نام دیتابیس برنامه بر اثر ورود کد اشتباه خراب بشه دیگه برنامه درست کار نمیکنه
البته این فقط یک حالت بود و با استفاده از این روش و استفاده از اون در جاهای مختلف کد و به روشهای مختلف دیگه میتونید کار ک.رکر رو خیلی خیلی سخت کنید