الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أريد طريقة لحفظ النصوص خارج البرنامج و استيرادها

مغلق
بدأه eias في 15 أغسطس 2006 · 21 رد · 2,131 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الفكرة التي أريدها أن البرنامج ممكن يحتاج استيراد نصوص جاهزة و طويلة .. و لكن لو كتبت هذه النصوص داخل ملفات Txt فإنها سوف يكون

المستخدم قادر على تعديلها ...فأنا أريد طريقة أو نوع من الملفات بحيث أحفظ فيه هذه النصوص ..و طريقة استيراد النصوص منها من داخل

البرنامج ....فهل يمكن استخدام ملفات Dll أو نوع من ملفات Txt مشفرة أو شيء آخر مع العلم إني لا أريد استخدام قواعد البيانات..وشكرا

#2

try XML

#3

السلام عليكم

أخى الكريم لما لا تخرج البيانات فى مسار بعيد عن البرنامج وتضعها

فى ملفTxt وليكن فى مجلد الوندوز مثلا

وبهذا لن يعرف المستخدم بها

وأيضأ أعتقد انه يمكنك الكتابه فى ملف نصى وتغير الأمتداد الخاص به إلى Dll

وبهذا لن يستطيع المستخدم معرفه ما بى الملف

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#4

السلام عليكم

أخي الكريم abd_albaset الحقيقة أنا لم أجرب الXml والتعامل معها و لكن أعتقد أنها قابلة للمشاهدة و التعديل ..

أخي الكريم GENIUS-IT عم نعذبك معنا ^.^

الحقيقة طريقة الحفظ بمسار بعيد ليست فعالة .. بكفي بقا صار لازم نعطي برامجنا شيء من الاحترافية ... أما طريقة تحويل Txt إلى Dll لا أعرف ..لم أجربها و لم تنجح معي ...

#5

السلام عليكم

أخى الكريم Eias

ان ما أقصده ليس تحويل الملف النصى إلى ملف DLL

ولكن تغير الأمتداد فقط وهذا مثال على ما أقول مثل الموضوع السابق الخاص بال html

Dim wr as Streamwriter
		wr = File.CreateText("a.dll")
		wr.Write(TextBox1.Text)
		wr.Close()

أرجو ان تكون فهمت ما أقصده

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#6

فكرتك رهيبة فكرت فيها لكني تبين أنه كملف نص عادي قابل للتعديل .. فلايمكن خداع النظام بسهولة..يعني لم يكتسب إلا أيقونة ملف الDll.

#7

السلام عليكم

اخى الكريم eias

هذه الطريقه الجأ إليها احياننا وهى فعاله مؤقتا

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#9

اذا خبأت الملفات تحت أي مسمى فان المستخدم يستطيع الوصول لها بعمل البحث على محتويات الملف وليس اسم الملف

والطرق الموجودة لحفظ text هي أما بالملفات المباشرة أو بحقول قواعد البيانات

ولكي تحفظها من تغيير المستهلك

فبالنسبة للملفات يمكن ان تضعها على protected directory اذا كنت تعمل من خلال network

وتعطي المستخدمين صلاحيات القراءة فقط

اما اذا كنت تعمل على نظام قائم بذاته Stand Alone فلن تتمكن من ذلك

أما في قواعد البيانات فتستطيع ان تحقق الحماية المطلوبة اذا عرضت التكست المطلوب في اداة للعرض فقط

ولم تعمل لها ربط Binding مع قاعدة البيانات

وهذه الطريقة هي المستخدمة في اغلبية برامج عرض البيانات .

تم تعديل هذه المشاركة بواسطة وليد مندني في 16 أغسطس 2006 في 10:26

#10

ايه المشكلة في إنك تعمل أنت ملف بامتداد جديد خاص بيك ... والملفات ده تشيل ال Text اللي أنت عايزه جواها ومتفتحش إلا من برنامجك وبس

Have fun ;) ;)

#11

شكرا لك أخي الكريم وليد مندني المشكلة هي ال Stand Alone لذلك نحن بحاجة لنوع ملفات مثل القفل... مثل ملفات التابعة للعبة ما مثلاً ..و قواعد البيانات لا أفكر باستعمالها..

شكرا لك أخي الكريم Cer الحقيقة إذا فعلت ذلك سأكون برمجت برنامج آخر ...هل تعرف طريقة بسيطة لذلك.

#12

كيفك يا إياس؟

لا يوجد يا إياس شيء إسمه محمي ومشفر في البرمجة، وجميع مقترحات الأخوة الأفاضل تتساوى في قيمتها ولن يستطيع أحد أن يقوم بتقديم حل أفضل مما قدموا (أقصد من ناحية القدرة على الحماية)، هناك الكثير من الأفكار وأكثرها إتباعاً لدى المبرمجين هي أن تضع النص الذي تريده في ملف مع عمل Encryption للنص، ولكن هذه الطريقة تتساوى في قدرتها على الحماية مع ما طرحه الأخوة، جميع المقترحات المقدمة تقدم لك حماية 100 بالمائة ما دامت شفرة برنامجك بعيدة عن عيني المستخدم، أما إن إستطاع المستخدم فكّ شفرة البرنامج (وهو أمر سهل لجميع لغات البرمجة بدون إستثناء) فإن جميع الطرق هي عديمة الجدوى على الأطلاق (سواء وضع النص في قاعدة بيانات محمية أو عمل encryption للنص ..ألخ) ... الملخص: تسطيع أن تجعل مهمة الآخرين صعبة في معرفة النص الذي تريد إخفاءه ولكن لن تستطيع جعل مهمتهم مستحيلة على الإطلاق وهنا يأتي السؤال عن أفضل الطرق لتحقيق تلك الغاية، أعتقد بأن ال Encryption هو الأفضل بلا منازع.

Learn Japanese :>>> http://www.nouben.com/

#13

و عليكم السلام و رحمة اله و بركاته

الأفضل هو تشفير النص

كما ذكر الاخوة الافاضل اعلاه

#14

أهلاً وسهلاً بالاستاذ هارون أنت كيفك أنا الحمد لله :lol:

طيب ملف الDll لا يمكن تعديله من قبل المستخدم ..و لكن لاحظت أنه عند فتح ملف الDll تبع أحد البرامج تلاحظ انه مشفر و كأنه ملف X.

أنا لاحظت أن شركات برمجة الألعاب تحفظ بياناتها داخل ملفات ذات لواحق غريبة ... أيضاً غير قابلة للتعديل..

حسنا إذا هل يوجد طريقة لعمل Encryption للنص داخل ملف Dll و هل هناك مثال ...

شكرا أخي الكريم الفريد ..

و لكن التشفير يا جماعة سوف يكلفي كود تشفير و كود فك تشفير أو بالأحرىEncryption ..

ممكن مثال

#15

السلام عليكم

أخى الكريم eias

هذا مثال على عمل Encryption

عن طريق Ascii Code

لفد وجدته فى احد المنتديات الأجنبيه أرجو انا يفيد

Ascii_Encr14858810232002.zip

تم تعديل هذه المشاركة بواسطة GENIUS-IT في 17 أغسطس 2006 في 00:28

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#16

شكرا لك اخي الكريم ...أحمد (GENIUS-IT)

حسناً إذا سأستعمل كود التشفير ....و لكن سؤال أخير ..طيب لو قام مبرمج باستخدام نفس الكود (و الي هو أكيد لن يتغير ) هل سيستطيع فك شيفرة

الملفات .

#17

الحمد لله عملت الموضوع

ممكن تعمل form زي الصورة :

th_29807_dddd_122_525lo.JPG

طبعا لازم ال Name space :

using System.IO;

اكتب تحت زرار ال save الكود التالي :

Dim StringToSave As String = MyRichTextBox.Text 
Dim MySaveDialog As SaveFileDialog = New SaveFileDialog 
MySaveDialog.Filter = ".moh (*.moh)|*.moh" 
If MySaveDialog.ShowDialog = DialogResult.OK Then 
 Dim Path As String = MySaveDialog.FileName 
 Dim MyFileStream As FileStream = New FileStream(Path, FileMode.Create) 
 Dim MyWriter As StreamWriter = New StreamWriter(MyFileStream) 
 MyWriter.Write(StringToSave) 
 MyWriter.Close 
 MessageBox.Show("Saved") 
End If

وتحت زرار ال Open الكود :

Dim MyOpenDialog As OpenFileDialog = New OpenFileDialog 
MyOpenDialog.Filter = ".moh (*.moh)|*.moh" 
If MyOpenDialog.ShowDialog = DialogResult.OK Then 
 Dim Path As String = MyOpenDialog.FileName 
 Dim MyReader As StreamReader = New StreamReader(Path, System.Text.Encoding.Default) 
 MyRichTextBox.Text = MyReader.ReadToEnd 
End If

جرب البرنامج : اكتب في ال RichTextBox واعمل save هيطلع في ملف امتداده moh

امسح ال RichTextBox واعمل open للملف اللي عملتله save هيفتحلك اللي أنت كتبته

ارجو أن يكون ده هو اللي أنت عايزه

أي ملاحظات : just say it

Have fun ;) ;)

#18

اخى الكريم اياس و ليه تلجاء الى طرق تشفيرات اخرى لا تعرف عنها شىء من الافضل انك تحفظ النصوص فى

ملفات ثنائيه بدون اى امتداد و ايضا النصوص فى داخلها تكون مشفره بشفره خاصه ببرنامجك انت

لا يفهمها احد غيرك انت مثلا a= 23d b=21c و كده و اعتقد انها افضل طريقه لحمايه النصوص

#19

السلام عليكم

أخى الكريم eias

طبعا مفيش شىء فى التشفير مستحيل ويمكن كسر تلك الشفره أيا كانت

ولكن مهمتنا هى ان نجعل الأمر صعبا فقط ولكن لا يوجد شىء مستحيل

ويمكنك أتباع طريقه الأخ half angel

فهى فعاله

ولكن انا أسف لن مسافر وانا أستطيع متابعت الموضوع أرجو ان تجد الحل المناسب

Never Give Up You Are Programmer

Being Genius Is The Step Before Madness

Artificial Intelligence Is No Match For Natural Stupidity

#20

السلام عليكم..

شكرا لك أخي الكريم Cer الحقيقة طريقتك أعجبتني و سأستخدمها على ما يبدو... لأن وضع دالة لتشفير و فك التشفير أمر متعب في البرنامج.

شكرا لك أخي الكريم half angel ممكن تعطيني مثال صغير إذا عندك وقت طبعاً

شكرا لك أخي الكريم GENIUS-IT ولا يهمك الموضوع محلول لاداعي لان تربط نفسك به.

#21

اخي الكريم يمكن استخدام هذا الكلاس لتشفير البيانات

عذراً الكود بـ #C يمكنك تحويلة بأي برنامج تحويل اكواد دوت نت

using System;
using System.Text;

namespace SoftWin.ToolsPlus {

	public class Encrypt {

		private static byte GetPassword(string Password) {

			byte[] Pass = Encoding.Unicode.GetBytes(Password);
			int sum = 0;

			foreach (byte P in Pass) {
				sum += P;
			}

			byte Result = Convert.ToByte(sum % ((int)255));
			Result ^= 255;

			return Result;
		}

		public static string Crypt(string ToBase64) {
			try {

				if (ToBase64 == "") return null;

				byte[] bytes = Encoding.Unicode.GetBytes(ToBase64);

				return Convert.ToBase64String(bytes);

			} catch {
				return null;
			}
		}

		public static string Crypt(string Password, string ToBase64) {
			try {

				if (ToBase64 == "") return null;

				byte[] bytes = Encoding.Unicode.GetBytes(ToBase64);
				byte[] Result = new byte[bytes.Length + 1];
				byte Pass = GetPassword(Password);

				Array.Copy(bytes, 0, Result, 1, bytes.Length);

				Result[0] = Pass;

				for (int I = 1; I < Result.Length; I++) {
					Result ^= Pass;
				}

				return Convert.ToBase64String(Result);

			} catch {
				return null;
			}
		}

		public static string Decrypt(string FromBase64) {
			try {

				byte[] bytes = Convert.FromBase64String(FromBase64);
				return Encoding.Unicode.GetString(bytes);

			} catch {
				return null;
			}
		}

		public static string Decrypt(string Password, string FromBase64) {
			try {

				byte[] bytes = Convert.FromBase64String(FromBase64);
				byte[] Result = new byte[bytes.Length - 1];
				byte Pass = GetPassword(Password);

				// Check Password in Byte[0]
				if (bytes[0] != Pass) {
					return null;
				}

				Array.Copy(bytes, 1, Result, 0, Result.Length);

				for (int I = 0; I < Result.Length; I++) {
					Result ^= Pass;
				}

				return Encoding.Unicode.GetString(Result);

			} catch {
				return null;
			}
		}
	}
}

ويستخدم كاالتالي :

لتشفير النص

textBox1.Text = Encrypt.Crypt("myString");

لتشفير النص مع كلمة سر

textBox1.Text = Encrypt.Crypt("myPassword", "myString");

فك تشفير النص

textBox2.Text = Encrypt.Decrypt(textBox1.Text );

فك تشفير النص بكمة السر

textBox2.Text = Encrypt.Decrypt("myPassword", textBox1.Text );

تبقي لك اخي الكريم حفظ النص المشفر في ملف خارجي

الفكرة بسيطة وغير احترافية ولكنها توفي بالغرد

السلام عليكم

تم تعديل هذه المشاركة بواسطة Moudey في 20 أغسطس 2006 في 04:23

مواضيع متنوعة

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…