تسجيل الدخول

مشاهدة النسخة كاملة : طلب سؤال في الدلفي 7 للخبراء


adeloche
2013-06-20, 17:08
:dj_17:
كيف يمكنني التحويل من الـ str الى الـ hex والعكس


وكيف يمكنني تحديد نوع النص المدرج مثلا
يكون أرقام فقط أو حروف لاتينية فقط
أو قيم hex





ثم كيفية تحديد جزء فقط من النص للعمل عليه

مثلا في الـ
edit1.text:= '123456789';
أحتاج فقط الجزء بالأحمر


وشكرا

bobsat017000
2013-06-22, 12:47
بارك الله فيك على المجهود

hapi00
2013-06-24, 16:37
:dj_17:
كيف يمكنني التحويل من الـ str الى الـ hex والعكس


وكيف يمكنني تحديد نوع النص المدرج مثلا
يكون أرقام فقط أو حروف لاتينية فقط
أو قيم hex





ثم كيفية تحديد جزء فقط من النص للعمل عليه

مثلا في الـ
edit1.text:= '123456789';
أحتاج فقط الجزء بالأحمر


وشكرا





السلام عليكم

التحويل من الـ str الى الـ hex

لا يوجد دالة جاهزة تقوم بهذا التحويل لذا يجب عليك انشاء دالة تقوم بهذا الغرض ثم استعملها في أي موضع تريد

هذه الدالة عملها هو تحويل الــ str الى int باستعمال ord حسب جدول شفرة آسكي ثم من int الى hex ,, ويتم اسناد النتيجة في متغير فارغ من خلال حلقة for أي تأخد الحرف الأول من الجملة أو الكلمة المدخلة وتحوله و تضعه في المتغير و في الدورة الثانة تأخد الحرف الثاني و هكذا الى أن تنتهي في الحرف الأخير و الذي تعرف رقمه من خلال length

الأمر بسيط يا أخي هذا مثال

Function adeloche(hapi00 : String):String;
var
h:integer;
begin
djelfa:='';
for h:=1 to length(hapi00) do
djelfa := djelfa+IntToHex(Ord(hapi00[h]),2);
end; هنا مشاهدة جدول شفرة أسكي (http://www.ascii-code.net/)

التحويل من الـ hex الى الـ str
استعمل '$' بجانب الحرف الذي هو بالـ hex سيعطيك الــ str
مثلا
adeloche:= ('$' + hapi00)___________________________________________ _________

تحديد نوع النص المدرج مثلا يكون أرقام فقط

استعمل if للتحقق من نوع المدخلات مثلا

if not (hapi00[h] in ['0'..'9'])thenثم ضع ما تريد في جواب الشرط مثلا تظهر له رسالة تخبره بأنه لم يدخل رقما ,, طبعا هذه الجملة الشرطية تكتبها داخل حلقة for وهذا للتأكد من كامل ما تم ادخاله مثل المثال السابق تماما for h:=1 to length(hapi00) do

تحديد نوع النص المدرج مثلا يكون أحرف فقط

مثل الأرقام فقط تستبدل
if not (hapi00[h] in ['a'..'z'])then

تحديد نوع النص المدرج مثلا يكون hex فقط

مثل الأرقام فقط أضف له 'a' .. 'f' مثلا

if not (hapi00[h] in ['0'..'9', 'a'..'f'])then

----------
أو باختصار و بدون حلقة for يمكنك استعمال key مثلا

if not (Key in [....]) then

مكان النقاط الزرقاء ضع ما تريد ,, مثل السابق للتحقق من الأرقم أو الحروف أو hex
__________________________________________________ ____________

تحديد جزء فقط من النص للعمل عليه

مثلا في الـ edit1.text:= '123456789';
نستعمل حلقة for لنحصل الا على الجزء الأحمر في متغير أخر و هكذا نعمل عليه كما نريد مثلا

for h:=1 to length(edit1.text) doثم تضع شرط if اذا h=5 يخرج من الحلقة حيث 5 هو ترتيب الحرف في الجملة أو الكلمة مثلا

edit1.text:= 'abcdef';هنا عندما يصل الى الحرف e و الذي هو h=5 يخرج من الحلقة

في الأخير نحصل على متغير يحمل abcde

يا أخي يعني مجرد قليلا من الذك و التفكير تستطيع عمل ما تريد

بالتوفيــق أخي الكريـــم

adeloche
2013-06-29, 13:29
السلام عليكم

التحويل من الـ str الى الـ hex

لا يوجد دالة جاهزة تقوم بهذا التحويل لذا يجب عليك انشاء دالة تقوم بهذا الغرض ثم استعملها في أي موضع تريد

هذه الدالة عملها هو تحويل الــ str الى int باستعمال ord حسب جدول شفرة آسكي ثم من int الى hex ,, ويتم اسناد النتيجة في متغير فارغ من خلال حلقة for أي تأخد الحرف الأول من الجملة أو الكلمة المدخلة وتحوله و تضعه في المتغير و في الدورة الثانة تأخد الحرف الثاني و هكذا الى أن تنتهي في الحرف الأخير و الذي تعرف رقمه من خلال length

الأمر بسيط يا أخي هذا مثال

function adeloche(hapi00 : string):string;
var
h:integer;
begin
djelfa:='';
for h:=1 to length(hapi00) do
djelfa := djelfa+inttohex(ord(hapi00[h]),2);
end; هنا مشاهدة جدول شفرة أسكي (http://www.ascii-code.net/)

التحويل من الـ hex الى الـ str
استعمل '$' بجانب الحرف الذي هو بالـ hex سيعطيك الــ str
مثلا
adeloche:= ('$' + hapi00)___________________________________________ _________

تحديد نوع النص المدرج مثلا يكون أرقام فقط

استعمل if للتحقق من نوع المدخلات مثلا

if not (hapi00[h] in ['0'..'9'])thenثم ضع ما تريد في جواب الشرط مثلا تظهر له رسالة تخبره بأنه لم يدخل رقما ,, طبعا هذه الجملة الشرطية تكتبها داخل حلقة for وهذا للتأكد من كامل ما تم ادخاله مثل المثال السابق تماما for h:=1 to length(hapi00) do

تحديد نوع النص المدرج مثلا يكون أحرف فقط

مثل الأرقام فقط تستبدل
if not (hapi00[h] in ['a'..'z'])then

تحديد نوع النص المدرج مثلا يكون hex فقط

مثل الأرقام فقط أضف له 'a' .. 'f' مثلا

if not (hapi00[h] in ['0'..'9', 'a'..'f'])then----------
أو باختصار و بدون حلقة for يمكنك استعمال key مثلا

if not (key in [....]) thenمكان النقاط الزرقاء ضع ما تريد ,, مثل السابق للتحقق من الأرقم أو الحروف أو hex
__________________________________________________ ____________

تحديد جزء فقط من النص للعمل عليه

مثلا في الـ edit1.text:= '123456789';نستعمل حلقة for لنحصل الا على الجزء الأحمر في متغير أخر و هكذا نعمل عليه كما نريد مثلا

for h:=1 to length(edit1.text) doثم تضع شرط if اذا h=5 يخرج من الحلقة حيث 5 هو ترتيب الحرف في الجملة أو الكلمة مثلا

edit1.text:= 'abcdef';هنا عندما يصل الى الحرف e و الذي هو h=5 يخرج من الحلقة

في الأخير نحصل على متغير يحمل abcde

يا أخي يعني مجرد قليلا من الذك و التفكير تستطيع عمل ما تريد

بالتوفيــق أخي الكريـــم





لا أجد كيف أشكرك

hapi00
2013-07-08, 17:54
لا أجد كيف أشكرك

[ شــــــكــــــــــرا لــــــــــــــــــــــــــك ] <------ Thus only :mh92:

karika2
2014-11-18, 22:41
مرحبا أخى hapi00
ممكن جدول ascli الخاص باللغة العربية

samir mp3
2014-12-11, 13:03
للبحث عن كلمة داخل string استخدم string' )ansipos',var);