delphi4arab منتديات دلفي للعرب

نسخة كاملة : سؤال حول الملفات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

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

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


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



شكرا
[COLOR="Indigo"]ليست لدي نسخة دلفي حديثة على جهازي في الوقت الحالي سوى الدلفي 2
و هناك اخطاء كثيرة فيها لكن نضرت الى السورس و لاحضت بعض الأمور

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

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

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

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

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

هل انشاء ذاكرة ب getmem و تحريرها f reemem عدة مرات في نفس الحلقة لا يشكل خطأ ؟
ايليت ذكرت نوع او تفاصيل الخطئ
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;

بالتوفيق ,,