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

مشاهدة النسخة كاملة : مشكلة عند تكرار الامر File.Copy فى اكثر من صفحة


القنـاص المصرى
15-09-2013, 12:34 AM
السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
اخوانى الكرااام انا عارف انى دوشتكم باستفساراتى الكثيرة المريرة
واعرف ان الحمل عليكم زائد وما فى المنتدى من محترفين الا ومعدودين واعلم ان الحمل عليئكم زائد فسامحونى
اما عن اسفسارى هذا فانا لا اعلم اهو خطأ برمجى ام عيب فى البرنامج نفسه
طيب تعالو نشوف الخطأ
------------------------------
اولا هذا كود مشترك فى صفحات المشروع

-- الثور على كل الملفات بداخل المجلد Actions

files = File.Find("AutoPlay\\Docs\\Actions", "*.*", true, true, nil, nil);

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

if files == nil then

Dialog.Message("تنبيه", "لايوجد ملفات لنسخها", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

else

-- حساب الحجم الكلى للملفات

total_size = 0

for x,y in pairs (files) do

get_size = File.GetSize(y);

total_size = total_size + get_size

end

total_size = String.GetFormattedSize(total_size, FMTSIZE_AUTOMATIC, true);

Label.SetText("sz", total_size);

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

-- ÍÓÇÈ ÚÏÏ ÇáãáÝÇÊ Çáßáí

count = Table.Count(files);

Label.SetText("all", count);

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

-- ÅÌÑÇÁ ÚãáíÉ ÇáäÓÎ ÈÚÏ ÇáÊÍÞÞ ãä ÇáãÓÇÑ ÇáåÏÝ

path = Input.GetText("Input1");
if path == "Choose Target Folder to Copy Actions" then

Dialog.Message("ÊäÈíå", "ÍÏÏ ÇáãÓÇÑ ÇáÐí ÊÑíÏ äÓÎ ÇáãáÝÇÊ Åáíå", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

else
Folder.Create(path.."\\Actions");
path = path.."\\Actions"

for x,y in pairs (files) do

File.Copy(y, path, false, true, false, false, nil);

Label.SetText("current_num", x);

Progress.SetCurrentPos("Progress1", x * 100 / count);

end -- for x,y in pairs (files) do

Dialog.Message("Notice", "Done !!", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

end -- if path == "" then

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

end -- if files ~= nil then
لايختلف هذا الكود من صفحة لصفحة الا المسار
فالكود المطروح هو مسار ملفات الاكشنز الخاصة بالفوتوشوب وهو فى زر التنصيب الخاص بصفحة الاكشنز
واما الصفحات الاخرى فيختلف المسار اللى هو Autoplay\\Docs\\Actions
فيتم تغيره الى مسار اخر حسب الملف اللى واضعه فى التجميعة

المشكلة هو انى لايمكننى استخدام الكود الا مرة واحدة
مثلا :
عندى صفحتين واحدة خاصة بالصور والثانية خاصة بالاكشنز
اذا دخلت الى صفحة الاكشنز ووضعت مسار النسخ فى Input 1 يتم النسخ ثم اذا ضغط على زر الرجوع الى الصفحة الرئيسية ثم التنقل
الى صفحة الصور وانفذ عملية النسخ فتظهر رسالة "لاتوجد ملفات لنسخها" واذا راجعت الكود المذكور بالاعلى ستجد انها لن تظهر
الا فى حالة ان تؤل قيمة File.Find الى القيمة Nill
مع العلم انه نفس الكود اللى فى صفحة الاكشنز باختلاف المسار
اما اذا قمت بأغلاق التجميعة والبدأ بتنصيب الصور يتم التنصيب بنفس الطريقة
وعند العودة الى تنصيب الاكشنز يحدث نفس الخطأ
وهذا فيديو توضيحى للمشكلة
http://www.youtube.com/watch?v=QTnGq_dbTUc
ارجو ان تفيديونى فهذه المشكلة غرريبة جدا

Haitham.2012
15-09-2013, 07:51 PM
طيب ... حاليا يتعذر عليا القيام بالتجربه .. سأعطيك بعض المحاولات يمكن تنفع

اولا استبدل كود file.find بهذا ..

files = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\Actions", "*.*", true, true, nil, nil);



ثانيا ضع هذا السطر قبل كود ال file.find

files = {}

القنـاص المصرى
15-09-2013, 08:58 PM
اخى هيثم بعد تنفيذ خطواتك
صار يجبلى الرسالة وماصار يسطبلى شئ يعنى صارت اصعب من الاول
لانه كان الاول يسطب مرة واحدة الان ماعد بيسطب اصلا وبيقلى لايوجد ملفات لتنصيبها

Haitham.2012
16-09-2013, 12:30 AM
في هذه الحاله لا املك الا ان ترسل لي ملف مفتوح .. لانه اعتقد هناك تداخل في الاكواد يؤدي الى هذه المشكله ..!!

لا اريد ملفك المفتوح بالكامل طبعا " نسخه مصغره منه " به صفحتان كلا منهم به عملية النسخ المطلوبه

القنـاص المصرى
16-09-2013, 06:37 AM
قمت بعمل نسخة مصغرة للمشروع لك بحجم 2.5 ميجا
لان النسخة الاصلية تتجاوز ال 1.5 GB ووضعت الاكواد كوبى باست
واضفت ملفات فى فولدر الـDocs ولكن بأحجام صغيرة لكى تتأكد من عملية النسخ
اليك الرابط استاذ هيثم
http://hulkload.com/2r2hmke8mb1p
جزاك الله كل خير وانزلك فى نزل الانبياء وبارك فيك وفى ذريتك

Haitham.2012
16-09-2013, 12:42 PM
كل ما وضعته هذه الكلمه ( _SourceFolder ) قبل المسار .. وذكرت لك ذلك مسبقا لكن يبدو انك لم تنتبه .. عموما جربتها ونجح النسخ في كل المسارات بشكل جيد

actions = File.Find(_SourceFolder.."\\AutoPlay\\Docs\\Actions", "*.*", true, true, nil, nil);


بالتوفيق

القنـاص المصرى
16-09-2013, 04:31 PM
الحمد لله تم الحل يا اخى بفضل الله ثم فضلك نعم انا كنت نسيت دمج الملف عبر النقتطين
وجزاك الله كل خير على مجهودك معنا