ایجاد لایسنس متنی برای پروژه

سلام بچه ها.
من می خواستم واسه پروژه ام یه لایسنس متنی بذارم به این روش که:

یه فایل text داخل یه فایلی داشته باشم، بعد شرط بذارم که اگه فایل متنی مورد نظر وجود داشت و محتوای داخلش هم فلان چیز بود، پروژه ام اجرا بشه و در غیر این صورت بسته بشه!

دستور شرطش رو بلدم، اینکه اگه فایل متنی وجود داشت پروژه اجرا بشه! اما این واسم کافی نیست! می خوام محتویات اون فایل متنی در دستور شرط خوانده بشه، و اگه محتویان همون بود که مد نظر منه، نرم افزار اجرا بشه! ممنون میشم کسی کمک کنه!

مثلا: یه فایل serial.txt توی سی دی پروژه ام دارم که داخلش نوشته: BDM35465464FK حالا می خوام شرط بذارم که اگه فایل متنی serial.txt وجود داشت و محتویاتش: BDM35465464FK بود نرم افزار اجرا بشه!
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
کد:
file$ = '<SrcDir>\serial.txt'
data$ = 'BDM35465464FK'
LoadText("content$","file$")
FileExist("file$","exists")
If (exists & content$ = data$) Then
  ** ok
Else
  ** error
End
 
ممنونم درست شد اما اینطوری فقط واسه وقتی میشه که محتوای اون فایل فقط یک کلمه یا یک خط باشه!
حالا اگه محتوای فایل متنی من چند خط باشه چی؟
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
باید از این کد استفاده کنید

کد:
filename$='<SrcDir>\File.txt'
StrFromFile$=StrFromFile(filename$,3,1)

این کد الان فایل متنی خط سومش رو فراخوانی میکنه که میتونید تغییرش بدید
 
ممنونم ببینید بحث خط خاصی نیست!
ببینید در نظر بگیرید یه فایل متنی با n خط متن!
حالا می خوام این فایل و محتواش لایسنس باشه!
یعنی حتی اگه یه space یا یه حرف یا یه کلمه از این فایل متنی کم یا زیاد شد، نرم افزار error بده!
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
این محتوا اگه توی یک خط باشه که با همون دستورات قبلی میتونید درسیتی و نادرستیش رو بدست بیارید

اگرم چند خطه بازم میتونید این کار رو بکنید با یه حلقه هر خط رو بخونید و با شرط مقایسه کنید

شما بگید دقیقا چی میخوایید بسازید و برای چه کاری میخوایید از این روش استفاده کنید؟
 
سلام ممنونم که با صبر و حوصله سوالم رو دنبال می کنید. ببینید من یه فایل txt دارم که داخل این فایل یه متنی نوشته ام، (یجور توافق نامه هست) حتما دیدید توی خیلی از نرم افزار ها که یه فایل تکست هست که توافق نامه و لایسنس ها و.. رو داخلش نوشته! خب طبیعتا این متن من پاراگراف هاش تو خط جداگانه نوشته شده، آدرس وبسایت، ایمیل و شماره تماس داخلشه و بین تیتر و مطلب space هست و مطلب همش یه خط نیست! چند خط هست! حالا می خوام این فایل رو بعنوان لایسنس قرار بدم واسه نرم افزار، که:


1- وجودش واسه اجرای نرم افزار ضروری باشه
2-حالا فرض کنیم کاربر متوجه شد و فایلی با این نام درست کرد و لایسنس رو به این شکل دور زد! می خوام محتواش مشخص باشه که اگه کوچکترین تغییری توی محتوای اون فایل text ایجاد شد، از درجه اعتبار ساقط بشه!

یعنی اعتبار نرم افزار برای اجرا به: 1- وجود اون فایل text و 2- محتوای اون وابسته باشه!
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
خب برای اینکار بهتره فایل رو Encrypt کنید و موقع اجرا Decrypt کنید اینجوری نمیتونن فایلتون رو ویرایش کنن

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

برای کد کردن فایلتون هم میتونید از پلاگین Fyeo استفاده کنید

انجمن رو جستجو کنید کلی مطلب در این مورد پیدا میکنید حتی خود من چندین نمونه قرار دادم قبلا فقط کافیه جستجو کنید
 
ببینید من آریانا رو استفاده کرده ام! بحث اینه که میخوام نرم افزارم فقط درصورتی اجرا بشه که یه فایل text با محتوای مد نظر من در کنار فایل اتورانم باشه! همین!

اینکه نشه ویرایشش کرد واسم مهم نیست! میخوام ویرایش هم اگه میکنه بکنه! ولی اگه ویرایش شد، اتورانم اجرا نشه!
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
خب من و محمد هم جوابتون رو همون اول دادیم دیگه

کدش رو هم براتون نوشتیم در کل برای اینکه پروژتون وابسته به اون فایل کنارش باشه باید هر 1 ثانیه کد زیر رو اجرا کنید که چک کنه فایل موجوده یا نه اگه نبود که دستور خروج رو صادر کنه

درضمن شما هر لحظه منظورتون رو از سوالتون تغییر میدید یه بار میگید نتونه فایل رو ویرایش کنه و ... منم راهنمایی کردم

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

من در کل جواب سوالتون رو دادم نمیدونم شما چرا اسرار به دوباره کاری میکنید یا منظورم رو نمیتونم برسونم یا نمیتونید گفته های من رو توی یه پروژه عملی کنید
کد:
file$ = '<SrcDir>\serial.txt' FileExist("file$","exists") If (exists=1) Then   ** ok Else   ** error End
 
ببینید من منظورم رو تغییر ندادم! ممنونم که کمکم می کنید اما اون کدی که در ابتدا گفتید فقط واسه وقتی کار می کنه که محتویات فایل text من یک کلمه باشه! من دو سه پاراگراف دارم! ببینید اینکه کاربر میتونه اون فایل رو ویرایش کنه واسم مهم نیست! ویرایش می خواد بکنه، بکنه، اما اگه کرد دیگه نرم افزار اجرا نمیشه!
دلیلش هم دقیقا همینه که گفتید! اگه کاربر بفهمه که اتوران من نیازمند اون فایل در کنارش هست تا اجرا بشه، خب سریع یه فایل با اون اسمی که من مد نظرمه می سازه و نرم افزار ایجاد میشه! این هم واسه من مشکلی نیست! ولی حالا که کاربر شاید این کارو می کنه! حداقل باید اون متنی که مد نظر منه تو اون فایلی که میسازه باشه تا نرم افزار اجرا بشه! مثلا حتما توی فایل text نوشته شده باشه:

نرم افزار من
**********
تهیه و تولید: سمیرا شاداب
سال تولید: 1392
آدرس پست الکترونیک: [email protected]
-------------------------------------------------------------
All rights reserved

با همین فرمت! یعنی همش تو یه خط نباشه! همینطوری باشه که نوشتم!
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
خب منم راحلشو گفتم نوشته ها رو کد کنید یا خود فایل رو Encrypt کنید وسلام شما خیلی کشش میدید در حالی که من چند بار جوابتون رو دادم الان مشغول کار روی پروژه ای هستم نمیتونم نمونه مثال براتون بسازم اما بتونم فردا براتون یه نمونه میزارم
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
مهم نیست محتوا چند خطی باشه، در اون کد محتویات فایل در متغیر $content ذخیره میشه، حالا اگر نیاز دارید محتوا چند خطی باشه متغیر $data رو طوری تغییر بدید که شامل چند خط بشه
کد:
CHR(10)+CHR(13)
این کد معادل سطر بعد هست.

ضمن اینکه راه حل دیگه این هست که بجای محتویات فایل، سایز فایل رو مقایسه کنید، یعنی توسط پلاگین چک کنید اگه سایز فایل یک مقدار مشخص بود یعنی تغییرات ایجاد نشده (البته نه کاملاً چون میشه یک محتوای دیگه جایگزین کرد که همون حجم رو اشغال کنه)
از اونجایی که ظاهراْ قصدتون این هست که فایل حاوی اطلاعات شما حتماً وجود داشته باشه میتونید از این روش های ترکیبی استفاده کنید تا مطمئن بشید که محتواش تغییری نکرده.

به هرحال همونطور که عرض کردم میتونید تمام محتوای فایلتون رو حتی اگر چند سطر باشه در متغیر قرار بدید.
 
مرسی میشه با یه sample ساده واسم توضیح بدید؟ ببخشید. چون من این کدی که گذاشتید رو متوجه نشدم! :shock:

ببینید کدی که الان من گذاشته ام اینه: که البته اینطوری محتوای فایل من باید فقط: Samiraaaaaaaa باشه!

PHP:
file$ = '<SrcDir>\lisence.txt'
data$ = 'Samiraaaaaaaa'
LoadText("content$","file$")
FileExist("file$","exists")
If (exists & content$ = data$) Then
  Return()
Else
  MessageEx("Faked disc diagnosed!","Sorry! This DVD is not an Original one!")
  Exit()
End



اگه اینطوری که شما می گید، بشه، + اینکه حجم رو هم در نظر بگیره عالی میشه!
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
فرض کنیم محتویات فایل متنی این چهار خط اول هست، متغیر $data رو ببینید، محتویات این متغیر همون چهار خط اول هست، ما درواقع کاراکتر هایی که وقتی Enter رو میزنیم به خط بعد میریم (CR+LF) رو با معادلشون که کاراکترهای شماره ی 13 و 10 هست جایگزین می کنیم.
کد:
/*
Line 1
Line 2
Line 3
Line 4
*/
data$ = 'Line 1' + CHR(13) + CHR(10) +  'Line 2' + CHR(13) + CHR(10) + 'Line 3' + CHR(13) + CHR(10) + 'Line 4'
متاسفانه فرصت نمیکنم مثال براتون بسازم، برای آشنایی با نحوه ی بدست آوردن حجم فایل مثال پلاگین هایی که اینکار رو انجام میدن مثل Microbe File & Folders رو بررسی کنید
 

m javad

کاربر متخصص
این کد کارتون رو راه میندازه:
کد:
data$[1]='Line1'
data$[2]='Line2'
data$[3]='Line3'
data$[4]='Line4'
*************
file$='<SrcDir>\serial.txt'
FileExist("file$","exists")
If (exists=1) Then
  For i=1 To 4
    Line$=StrFromFile(file$,i,1)
    If (Line$<>data$[i]) Then
      ** error
      MessageEx("Faked disc diagnosed!","Sorry! This DVD is not an Original one!")
      Exit()
      Return()
    End
  Next i
Else
  ** error
  MessageEx("Faked disc diagnosed!","Sorry! This DVD is not an Original one!")
  Exit()
End
نیازی نیست حجم رو اندازه بگیرید
برای فایلهای متنی Ansi حجم فایل با تعداد کارکتر رابطه مستقیم داره
یعنی یه فابل با متن as و یه فایل با متن gf حجم یکسان داره
پس معیار خوبی نیست
 
آخرین ویرایش:
سلام
آقا جواد من این کدی که گفتید رو گذاشتم و یه فایل متنی 4 خطی هم قرار دادم ولی همش اون پیغام خطا رو میده!

PHP:
data$[1]='Line1'
data$[2]='Line2'
data$[3]='Line3'
data$[4]='Line4'
*************
file$='C:\Users\Ebrahim\Desktop\multimedia\crli.sba'
FileExist("file$","exists")
If (exists=1) Then
  For i=1 To 4
    Line$=StrFromFile(file$,i,1)
    If (Line$<>data$[i]) Then
      ** error
      MessageEx("Faked disc diagnosed!","Sorry! This DVD is not an Original one!")
      Exit()
      Return()
    End
  Next i
Else
  ** error
  MessageEx("Faked disc diagnosed!","Sorry! This DVD is not an Original one!")
  Exit()
End

محتوای فایل متنی:
PHP:
1
2
3
4
 

m javad

کاربر متخصص
خب شما باید تو کد data$[1]='Line1' برای مثال Line1 رو با همون چیزی که تو خط اول فایل میزارید عوض کنید.مثلا الان با توجه به فایلتون باید کد این بشه:

کد:
[COLOR=#000000][COLOR=#0000BB]data[/COLOR][COLOR=#007700]$[[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]]=[/COLOR][COLOR=#DD0000]'1'
[/COLOR][COLOR=#0000BB]data[/COLOR][COLOR=#007700]$[[/COLOR][COLOR=#0000BB]2[/COLOR][COLOR=#007700]]=[/COLOR][COLOR=#DD0000]'2'
[/COLOR][COLOR=#0000BB]data[/COLOR][COLOR=#007700]$[[/COLOR][COLOR=#0000BB]3[/COLOR][COLOR=#007700]]=[/COLOR][COLOR=#DD0000]'3'
[/COLOR][COLOR=#0000BB]data[/COLOR][COLOR=#007700]$[[/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700]]=[/COLOR][COLOR=#DD0000]'4'
[/COLOR][COLOR=#007700]*************
[/COLOR][COLOR=#0000BB]file[/COLOR][COLOR=#007700]$=[/COLOR][COLOR=#DD0000]'C:\Users\Ebrahim\Desktop\multimedia\crli.sba'
[/COLOR][COLOR=#0000BB]FileExist[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"file$"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#DD0000]"exists"[/COLOR][COLOR=#007700])
If ([/COLOR][COLOR=#0000BB]exists[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]Then
  [/COLOR][COLOR=#007700]For [/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]1 To 4
    Line[/COLOR][COLOR=#007700]$=[/COLOR][COLOR=#0000BB]StrFromFile[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]file[/COLOR][COLOR=#007700]$,[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700])
    If ([/COLOR][COLOR=#0000BB]Line[/COLOR][COLOR=#007700]$<>[/COLOR][COLOR=#0000BB]data[/COLOR][COLOR=#007700]$[[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]]) [/COLOR][COLOR=#0000BB]Then
      [/COLOR][COLOR=#007700]** [/COLOR][COLOR=#0000BB]error
      MessageEx[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Faked disc diagnosed!"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#DD0000]"Sorry! This DVD is not an Original one!"[/COLOR][COLOR=#007700])
      Exit()
      Return()
    [/COLOR][COLOR=#0000BB]End
  Next i
[/COLOR][COLOR=#007700]Else
  ** [/COLOR][COLOR=#0000BB]error
  MessageEx[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"Faked disc diagnosed!"[/COLOR][COLOR=#007700],[/COLOR][COLOR=#DD0000]"Sorry! This DVD is not an Original one!"[/COLOR][COLOR=#007700])
  Exit()
[/COLOR][COLOR=#0000BB]End 
[/COLOR][/COLOR]

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

جدیدترین ارسال ها

بالا