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

مشاهدة النسخة كاملة : هل يمكن بعلومية ValueName حذف Section


ياسرهتهت
26-09-2018, 05:21 PM
بسم الله الرحمن الرحيم

هل يمكن بعلومية ValueName وقيمة هذا Value حذف السكشن Section الحاوي لهذا ValueName المعلوم لدينا اسما وقيمة


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

عبود عبود
26-09-2018, 05:51 PM
مرحبا بك أخى

هل تقصد :

--
result = INIFile.GetValue(_WindowsFolder.."\\My Settings.ini", "My Section", "My Value");
if result == "any thing" then
INIFile.DeleteSection(_WindowsFolder.."\\My Settings.ini", "My Section");
end

عبود عبود
26-09-2018, 05:58 PM
أم تقصد البحث فى أسماء السكاشن كلها ومن ثم إذا وجد القيمة فى أى سكشن يحذف هذا السكشن ؟

--
result = INIFile.GetSectionNames(_WindowsFolder.."\\My Settings.ini");
if result~=nil then
for i, s in pairs(result) do
t = INIFile.GetValue(_WindowsFolder.."\\My Settings.ini", s, "My Value");
if t == "any thing" then
INIFile.DeleteSection(_WindowsFolder.."\\My Settings.ini", s);
break
end
end
end

ياسرهتهت
26-09-2018, 05:59 PM
بسم الله الرحمن الرحيم
استاذ اقصد عندي ملف يحتوي على عدد من السكاشن
ولكل سكشن عدد من النيم فاليم وطبعا كل نام فاليم له قيمة

هل يمكن بعلومة النيم فاليوم وقيمة الفاليوم حذف السكشن كا كل

عبود عبود
26-09-2018, 06:05 PM
إذن الرد الثانى هو الأنسب

لاحظ "My Value" هو إسم الفالى المراد البحث عن قيمتة
فإذا وجدت دالة التكرار إسم هذا الفالى فى أى سكشن وقيمتة مساوية للقيمة "any thing"
سوف يتوقف التكرار ويحذف السكشن

يعنى سوف تغير فى الإسم الفالى "My Value" إلى أى إسم تريد وتغير القيمة "any thing" إلى أى قيمة تريد البحث عنها

ياسرهتهت
26-09-2018, 06:06 PM
هذا توضيح

https://f.top4top.net/p_999rn00t1.png

عبود عبود
26-09-2018, 06:08 PM
طبعا ايقاف التكرار كان الامر break فى الكود
فإذا لم تكن تريد توقف التكرار عن العثور على أول مطابقة للشرط فقط و إذا كان هناك لجميع السكاشن المتساوية لا تضع هذا الامر

عبود عبود
26-09-2018, 06:08 PM
نعم نعم نعم :abc_065:

عبود عبود
26-09-2018, 06:11 PM
كلمة الارسال هى القيمة التى تستبدلها فى الكود مكان "any thing"

وكلمة NEME هى الإسم للفالى الذى تستبدلة مكان كلمة "My Value"

ياسرهتهت
26-09-2018, 06:12 PM
:abc_138::abc_138:
:abc_051:
كل الشكر استاذ عبود تمام هذا المطلوب
:abc_152::abc_152::abc_152:

عبود عبود
26-09-2018, 06:12 PM
طبعا تضعهم فى علامة تنصيص عادى "neme"
أيضا "الارسال"

ياسرهتهت
28-09-2018, 01:52 PM
طبعا تضعهم فى علامة تنصيص عادى "neme"
أيضا "الارسال"
------------------------------------------

تمام استاذ عبود
اريد ان اكبر السؤال لو سمحت ؟

عندنا مجلد رئيس AL_HESAPAT بحتوي مجلدات بداخله وكل مجلد من المجلدات بحتوي مجلدات --- المهم كلها في المجلد الرئيسي؟
وكلها تحتوي على ملفات ini ؟؟

السؤال كيف يمكن تطبيق السؤال (اي حذف سكشن بمعلومية الفاليوم ) على جميع ملفات ini في المجلد الرئيسي وفروعه ؟

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

ياسرهتهت
28-09-2018, 04:58 PM
بسم الله الرحمن الرحيم
توصلت لهذا الكود وهو يقوم بالمطلوب
لكن اريد ان يتم اعتمادة من الاستاذ عبود
كي يرتاح فكري




Find = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\AL_HESAPAT\\", "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do

t = INIFile.GetValue(s, n, "NEME");
if t == txt then
INIFile.DeleteSection(s, n);
end

end
end

end
end



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

عبود عبود
29-09-2018, 03:34 PM
السلام عليكم ورحمة الله وبركاته

تمام الله ينور عليك :abc_051: أستاااااااااااذ

ياسرهتهت
29-09-2018, 09:48 PM
:abc_152::abc_152:
شكرا استاذ عبود
كل التقدير والاحترام
:abc_152::abc_152:

ياسرهتهت
08-10-2018, 08:37 PM
السلام عليكم ورحمة الله وبركاته

تمام الله ينور عليك :abc_051: أستاااااااااااذ
--========---=======----==========------

بسم الله الرحمن الرحيم

Find = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\AL_HESAPAT\\", "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do

t = INIFile.GetValue(s, n, "NEME");
if t == txt then
INIFile.DeleteSection(s, n);
end

end
end

end
end


استاذ عبود في نفس الكود اريد لو ان القيمة المخزنه في "NEME" رقم كيف اجمعها ؟

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



--------

عبود عبود
09-10-2018, 02:21 PM
if tonumber(NAME)==15 then ---------- end


إذا كانت القيمة الرقمية المتحصل عليها تساوى 15 مثلا إذن إفعل كذا

عبود عبود
09-10-2018, 02:22 PM
لو إستعصى الأمر عليك أعدل لك الكود كاملا

عبود عبود
09-10-2018, 06:57 PM
مرحبا أخى ياسر

--
num = 0;
Find = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\AL_HESAPAT\\", "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do
t = INIFile.GetValue(s, n, "NEME");
if tonumber(t) >= 1 then
--INIFile.DeleteSection(s, n);
num = num + t;
end
end
end
end
end
Dialog.Message("total","total number = "..num);

سوف تلاحظ فى الكود وضعت الشرط هذا :

if tonumber(t) >= 1 then

وهو معناه أن إذا كان الفالى الموجود فى القيمة NEME بعد تحويلة إلى رقم بواسطة tonumber أكبر من أو يساوى الواحد 1 إذن هذا معناه أن قيمة NAME هى قيمة رقمية .

كيف عرفت أن القيمة رقمية ؟؟ أضف إلى معلوماتك أن تحويل أى قيمة سواء نص أو رقم أو رقم نصى .... يتم بواسطة التعليمة البرمجية tonumber أى إلى رقم
وهنا إذا كان المحول هو عبارة عن نص حروف أو حرف فإن الناتج هو صفر 0
أما إذا كان المحول هو رقم فى صورة نص يعنى هكذا "125" دة رقم ولكنه فى وسط علامة تنصيص إذن هو نص ...... فإنة إذا ستعملنا التحويل لة هكذا ("125")tonumber إذن الناتج لة هو تحويلة إلى قيمة رقمية كما هو 125 كرقم


جرب هذا لتتضح لك الأمور :

a = tonumber("abood")
Dialog.Message("total",a);

تكون النتيجة هى صفر .

وهكذا ...........


http://www.abc4web.net/vb/images/icons/abc00.gif طبعا التعامل مع ملفات الأى إن أى يكون الريتيرن المخزن فيها هو نصى وليس رقمى لذلك إستعملت التعليمة tonumber للتحويل إلى رقم .

:abc_138:

ياسرهتهت
09-10-2018, 08:37 PM
بسم الله الرحمن الرحيم
شكرا جزيلا استاذ عبود هذا هو المطلوب

من امس وانا احاول ولم ان اجح ههههه

الف الف شكراااااااااا
:abc_152::abc_152:
:abc_138:

ياسرهتهت
09-10-2018, 08:41 PM
هل لوكانت القيمة بالسالب لا يجمعها مع الباقي؟

تمام استاذ عبود فقط حذفة الشرط التساوي او اكبر من الواحد وصار يجمع الكل ---


num = 0;
Find = File.Find(Data , "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do
t = INIFile.GetValue(s, n, "pR_PAKE");
--if tonumber(t) >= 1 then
--INIFile.DeleteSection(s, n);
num = num + t;
--end
end
end
end
end
Dialog.Message("total","total number = "..num);


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

عبود عبود
09-10-2018, 09:09 PM
هههههههههه إذن لم تفهم أهمية وضع التعليمة tonumber يا خسارة كلامى اللى فات :abc_005:

ياسرهتهت
09-10-2018, 09:16 PM
هههههههههه إذن لم تفهم أهمية وضع التعليمة tonumber يا خسارة كلامى اللى فات :abc_005:

انا فهمت انها تخبر البرنامج انه يتعامل مع ارقام وليس نصوص ؟
وانا حذفت الشرط لانني اريده ان يجمع كل القيم المخزنه في الفليم سالب او موجب

بوجود الشرط يحدث خلل لا يتعامل مع الناقص ؟

ما الحل ؟

عبود عبود
09-10-2018, 09:22 PM
num = tonumber(num) + tonumber(t);

بدون الشرط إف

حتى إذا ما وجد قيمة حرفية " نصية " مسجلة بالخطأ مثلا أو بالعمد يعمل على تحويلها ويكون نتيجة تحويلها صفر 0 يعنى عادى يمكن أن يجمعها ولا تؤثر على النتيجة فيما بعد

أليس كذلك ؟؟؟؟ هههههههههههه :abc_065:

عبود عبود
09-10-2018, 09:27 PM
--
num = 0;
Find = File.Find(Data , "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do
t = INIFile.GetValue(s, n, "pR_PAKE");
--if tonumber(t) >= 1 then
--INIFile.DeleteSection(s, n);
num = tonumber(num) + tonumber(t);
--end
end
end
end
end
Dialog.Message("total","total number = "..num);


توقع الأخطاء الممكنة هو طريق الحل لها فأنت مبرمج يمكنك أن تتعامل التعامل الأمثل مع ما تبرمجة ولكن المستخدم لا يدرى أليس كذلك ؟

ياسرهتهت
09-10-2018, 09:27 PM
num = tonumber(num) + tonumber(t);

بدون الشرط إف

حتى إذا ما وجد قيمة حرفية " نصية " مسجلة بالخطأ مثلا أو بالعمد يعمل على تحويلها ويكون نتيجة تحويلها صفر 0 يعنى عادى يمكن أن يجمعها ولا تؤثر على النتيجة فيما بعد

أليس كذلك ؟؟؟؟ هههههههههههه :abc_065:
-----------------------------------
شكرا وبارك الله فيك على هذه المعلومات المفيدة والقيمة
:abc_152::abc_152::abc_152:

ياسرهتهت
14-10-2018, 02:08 AM
--
num = 0;
Find = File.Find(Data , "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do
t = INIFile.GetValue(s, n, "pR_PAKE");
--if tonumber(t) >= 1 then
--INIFile.DeleteSection(s, n);
num = tonumber(num) + tonumber(t);
--end
end
end
end
end
Dialog.Message("total","total number = "..num);


توقع الأخطاء الممكنة هو طريق الحل لها فأنت مبرمج يمكنك أن تتعامل التعامل الأمثل مع ما تبرمجة ولكن المستخدم لا يدرى أليس كذلك ؟

-=-------------------
hاستاذ عبود اريد الحصول على القيمة الاوله t والقيمة الاخيرة كيف ؟؟؟


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

عبد الهادي بهاب
15-10-2018, 11:48 AM
السلام عليكم منورين الاساتذة الكرام
...........
مشكور على الموضوع و على مداخلات الاخوة ....

ممكن محاولة ... من اجل السؤال الاخير
نستخرج القيمة الاولى من خلال اول عنصر في الحلقة التكرارية i=1 و من اجل العنصر الاخير نضع الشرط i=# t_Section

اي ممكن يكون الكود على الشكل التالي


num = 0;
Find = File.Find(Data , "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do
t = INIFile.GetValue(s, n, "pR_PAKE");
if i == 1 then ele1 = tonumber(t)
elseif i == #t_Section then eleF = tonumber(t)
else
--INIFile.DeleteSection(s, n);
num = tonumber(num) + tonumber(t);
end
end
end
end
end
Dialog.Message("total", " First element = "..ele1.."\r\n".. " Last element = ".. eleF.. "\r\n".. "total number = "..num);

عبود عبود
15-10-2018, 02:52 PM
السلام عليكم ورحمة الله وبركاته

تمام كده
كما قال الأستاذ عبدو

ياسرهتهت
15-10-2018, 05:50 PM
السلام عليكم منورين الاساتذة الكرام
...........
مشكور على الموضوع و على مداخلات الاخوة ....

ممكن محاولة ... من اجل السؤال الاخير
نستخرج القيمة الاولى من خلال اول عنصر في الحلقة التكرارية i=1 و من اجل العنصر الاخير نضع الشرط i=# t_Section

اي ممكن يكون الكود على الشكل التالي


num = 0;
Find = File.Find(Data , "*.ini", true, false, nil, nil);
if Find~=nil then
for i, s in pairs(Find) do
t_Section = INIFile.GetSectionNames(s);
if t_Section then
for i , n in pairs(t_Section) do
t = INIFile.GetValue(s, n, "pR_PAKE");
if i == 1 then ele1 = tonumber(t)
elseif i == #t_Section then eleF = tonumber(t)
else
--INIFile.DeleteSection(s, n);
num = tonumber(num) + tonumber(t);
end
end
end
end
end
Dialog.Message("total", " First element = "..ele1.."\r\n".. " Last element = ".. eleF.. "\r\n".. "total number = "..num);


----------------------------------------------------

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

:abc_152::abc_152::abc_152:

ياسرهتهت
15-10-2018, 05:51 PM
السلام عليكم ورحمة الله وبركاته

تمام كده
كما قال الأستاذ عبدو

------------------------
شكرا لك استاذ عبود
موفق بإذن الله ... لك مني أجمل تحية .
:abc_152::abc_152::abc_152: