سؤال حول الملفات
#1
السلام عليكم

قمت بكتابة كود بسيط يقوم ب تجميع الملفات الموجودة في ListBox ثم يحولها الى ملف واحد

الفكرة بسيطة نقوم بحلقة عدد التكرار فيها هو عدد الملفات الموجودة في ListBox في كل مرة نفتح الملف نقرأ محتواه في buffer ثم نزيده الى الملف النهائي . وهكذا حتى يصبح لدينا ملف واحد حجمه هو حاصل جمع حجم الملفات الموجودة في ListBox


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



شكرا


الملفات المرفقة
.rar   mini_pak_prj.rar (الحجم : 1.77 ك ب / التحميلات : 36)
الرد
#2
[COLOR="Indigo"]ليست لدي نسخة دلفي حديثة على جهازي في الوقت الحالي سوى الدلفي 2
و هناك اخطاء كثيرة فيها لكن نضرت الى السورس و لاحضت بعض الأمور

كود :
var F , tmp : FILE;
حولها الى :
كود :
var F , tmp : TextFile;

كود :
Reset(tmp,1);
حولها الى :
كود :
Reset(tmp);

جربها ربما تنفع :omg:[/COLOR]
الرد
#3
شكرا musvc

لكن الملف F هو bin اي file of byte و ليس text file . لانه سيخزن جميع انواع الملفات

جربت rest . باقي نفس المشكل .

هل انشاء ذاكرة ب getmem و تحريرها f reemem عدة مرات في نفس الحلقة لا يشكل خطأ ؟
الرد
#4
ايليت ذكرت نوع او تفاصيل الخطئ
الرد
#5
1- يا أخي لماذا التعقيد (التعقيد <> الإحترافية) .
2- لم أصحح كل البرنامج أو أعمل شبيه له فقط تعديلات :

كود :
procedure TForm1.Button3Click(Sender: TObject); var F,T :File; Index : Word; buf : Byte; begin SD.Execute; If (SD.FileName = '') Or (Lb.Count = 0) Then Exit; {$I-} AssignFile(F,Sd.FileName); Rewrite(F,1); Seek(F,0); TrunCate(F); {$I+} If IoResult <> 0 Then Exit; Application.ProcessMessages; for Index := 0 to LB.Items.Count -1 do begin {$I-} AssignFile(T,Lb.Items[Index]); ReSet(T,1); Seek(T,0); {$I+} If IoResult <> 0 Then Exit; While Not Eof(T) Do Begin BlockRead(T,buf,1); BlockWrite(F,buf,1); End; CloseFile(T); End; CloseFile(F); end;

بالتوفيق ,,
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم