المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيف احول string الي number ؟


علي قد حالي
03-11-2016, 05:24 PM
السلام عليكم ورحمة الله وبركاته
مشكلة تتكرر معي باستمرار و ارجو ان افهم كيفية حلها
علي سبيل المثال عندما استدعي قيمة ما من ملف تكست باستخدام TextFile.ReadFromString
ثم احاول استخدام هذه القيمة في عملية حسابية يعطيني هذا الخطأ
Error attempt to perform arithmetic on a string value
ما حل هذه المشكلة ولماذا تحدث اصلا ؟
شـكــ وبارك الله فيكم ـــرا لكم ... لكم مني أجمل تحية .
:abc_138:

عبود عبود
03-11-2016, 05:53 PM
هناك تعليمة برمجية تعمل على التحويل إلى رقم وهى " ( ) tonumber " فيمكن التطبيق كالتالى على مثالك :

--
result = TextFile.ReadToString("C:\\MyFile.txt");
s = tonumber(result);

d = s*5 ;
Dialog.Message("",d);

أو يمكنك إستخدام أحد أكواد التعامل مع النصوص وهى :

result = String.ToNumber("5");

ثامر أبو بلقيس
03-11-2016, 06:46 PM
ReadToTable

ثامر أبو بلقيس
03-11-2016, 08:47 PM
أو :

إذ كــــان الملف النصي يحمل قيمــــة واحدة أي سطر واحد
فيمكنك كذلك تجربة الآتي :
k = io.input("AutoPlay\\Docs\\1.txt"):read ("*l")
Dialog.Message("Notice", k*5);
شـــريطة أن لا يكون سطرا شاغرا قبل البيانات لأنه في كل الحالات سيعطيك خطـأ
الا إذا أضفت كود يعالج حالة الشغور و يحذفها موفــــق .

ثامر أبو بلقيس
03-11-2016, 09:07 PM
لنقترض الان : ملف نصي فيه عشرات الأسطر الفارغة
ثم نجد قيمة رقمية " عدد " ثم يأتي بعد سطر العدد عشرات الأسطر الفارغة

نريد الوصول إلى الرقم و القيام بعملية و اهمال كل الأسطر الفارغة في الملف النصي

الحل في حرف n
جرب التعديل هذا على الكود السابق
k = io.input("AutoPlay\\Docs\\1.txt"):read ("*n")
Dialog.Message("Notice", k*5);


هات حالات ممكنة الحدوث .. موفق

ياسرهتهت
04-11-2016, 03:21 AM
لنقترض الان : ملف نصي فيه عشرات الأسطر الفارغة
ثم نجد قيمة رقمية " عدد " ثم يأتي بعد سطر العدد عشرات الأسطر الفارغة

نريد الوصول إلى الرقم و القيام بعملية و اهمال كل الأسطر الفارغة في الملف النصي

الحل في حرف n
جرب التعديل هذا على الكود السابق
k = io.input("AutoPlay\\Docs\\1.txt"):read ("*n")
Dialog.Message("Notice", k*5);


هات حالات ممكنة الحدوث .. موفق
--------------------------------------------------------
بسم الله الرحمن الرحيم

بارك الله فيك استاذنا الكريم
تم تجربة الكود بنجاح
http://www.abc4web.net/vb/images/icons/joomla.png والملاحظة يتعامل مع الرقم الاول في القائمة بغض النظر عن
الاسطر الفارغة
http://d.top4top.net/p_307j5yfi1.jpg

http://www.abc4web.net/vb/images/icons/startup.gif لكن لو وجد اي حرف او رمز قبل السطر الموجود فية الرقم يعطي خطأ
لكن تحت الرقم تتم العملية بنجاح

http://www.abc4web.net/vb/images/icons/eye.gif-http://www.abc4web.net/vb/images/icons/abc4web_ico_02.gif

هنا اريد ان اطرح ســـــؤال
في ملف txt قائمة بهذة الشكل


http://f.top4top.net/p_307a4gn61.jpg


http://www.abc4web.net/vb/images/smilies/abc_102.gif لايوجد علامة مميز او فاصل ولا مكان الرقم في السطر ثابت
كما هو واضح في الصورة
http://www.abc4web.net/vb/images/icons/startup.gif هل يمكن استدعاء الارقام في القائمة الي ListBox

http://www.abc4web.net/vb/images/smilies/abc_087.gif قائمة الاسماء في المرفقات للتجربة عليها ؟

موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
04-11-2016, 09:38 AM
سؤال ممتاز أستاذي المحترم
c = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for y =1, #c do
x = c[y]
ListBox.AddItem("ListBox1", string.match (x, "%d+"), "");
end

لا يجب أن يخلو سطرا من قيمة رقمية

أما في حالة وجود سطر من بين الأسطر لا يشمل أرقام

فهذا الشرط يعالج الأمر

c = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for y =1, #c do
x = c[y]
b = string.match (x, "%d+")
if b ~= nil then
ListBox.AddItem("ListBox1", b, "");
end
end

علي قد حالي
04-11-2016, 10:32 AM
أشكركم جميعا من كل قلبي :abc_145:
سأجرب الأكواد التي تفضلتم بذكرها ثم أعود إليكم بالنتائج :abc_088:
:abc_138::abc_138::abc_138:

ياسرهتهت
04-11-2016, 02:45 PM
بسم الله الرحمن الرحيم

:abc_152: شكراً لك استاذ ثامر على الابداع والتميز :abc_152:

:abc_050: كود مميز من اكواد ابو بلقيس :abc_050:


c = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for y =1, #c do
x = c[y]
b = string.match (x, "%d+")
if b ~= nil then
ListBox.AddItem("ListBox1", b, "");
end
end

الاروع ان استبدال d بـــ D يجلب النص بدون الارقام

موفق بإذن الله ... لك مني أجمل تحية .

:abc_138::abc_138::abc_138:

ثامر أبو بلقيس
04-11-2016, 02:51 PM
بسم الله الرحمن الرحيم

:abc_152: شكراً لك استاذ ثامر على الابداع والتميز :abc_152:

:abc_050: كود مميز من اكواد ابو بلقيس :abc_050:


c = textfile.readtotable("autoplay\\docs\\1.txt");
for y =1, #c do
x = c[y]
b = string.match (x, "%d+")
if b ~= nil then
listbox.additem("listbox1", b, "");
end
end

الاروع ان استبدال d بـــ d يجلب النص بدون الارقام

موفق بإذن الله ... لك مني أجمل تحية .

:abc_138::abc_138::abc_138:

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

ياسرهتهت
04-11-2016, 08:05 PM
بالضبط ... وماذا لو أردت فقط الاسماء العربية و استبعاد ذات الاحرف اللاتينية ؟

الجواب
c = TextFile.ReadToTable("AutoPlay\\Docs\\1.txt");
for y =1, #c do
x = c[y]
ListBox.AddItem("ListBox1", string.match (x, "%W+"), "");
end


ولكن يحتاج معالجة الاسطر الانجليزية تظهر فارغة في البست بكس

ثامر أبو بلقيس
04-11-2016, 08:10 PM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
:teslam:

علي قد حالي
05-11-2016, 01:39 AM
هناك تعليمة برمجية تعمل على التحويل إلى رقم وهى " ( ) tonumber " فيمكن التطبيق كالتالى على مثالك :

--
result = TextFile.ReadToString("C:\\MyFile.txt");
s = tonumber(result);

d = s*5 ;
Dialog.Message("",d);

أو يمكنك إستخدام أحد أكواد التعامل مع النصوص وهى :

result = String.ToNumber("5");
شكرا جزيلا أخي الكريم عبود :abc_138: جربت الكود الاول و الثاني و كلاهما يعمل و تم حل المشكلة :abc_138:

ReadToTable

شكرا جزيلا أخي الكريم ثامر :abc_052: سأجرب الأكواد كلها التي ذكرتها و أوافيك بالنتائج :abc_113:

علي قد حالي
30-11-2016, 08:43 PM
أخي الحبيب ثامر .. آسف علي تأخري في الرد لظروف مرضية
الاكواد مفيدة جدا .. روعة :abc_052:

ثامر أبو بلقيس
04-12-2016, 01:35 PM
أخي الحبيب ثامر .. آسف علي تأخري في الرد لظروف مرضية
الاكواد مفيدة جدا .. روعة :abc_052:
أخي :
تمنياتي لك بالشفاء إن شاء الله
موفق .