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

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

كيف ممكن أن أفتح ملف text (فعلا موجود عندي ولكن محتوياته كبيره جدا) وأقرأه ثم أكتب محتوياته مقسمه في عدة ملفات أخرى تكست أيضا
حيث محتوى الملف الأساسي عباره عن مقاطع مقاليه يفصل بينها خط ---------
بمعنى أن كل مقطع يجب أن يقرأ من الملف الأساسي ومن ثم يكتب في الملف الجديد و عند الوصول الى هذا الخط ---------- يفتح ملف أخر جديد وهكذا حتى تنتهي محتويات الملف الأساسي


شكرا
كود :
begin OpenDialog1.Execute; AssignFile(MyFile,OpenDialog1.FileName); Reset(MyFile); AssignFile(NewFile,'C:/File.txt'); Rewrite(NewFile); Repeat Readln(MyFile,Content); Writeln(NewFile,Content); Until EOF(MyFile); CloseFile(MyFile); CloseFile(NewFile); end;
لقد قمت بهذه العمليه لأقرأ الملف وأكتبه في ملف أخر

ولكن السؤال كيف من الممكن أنه عندما يقرأ السطر (---------------------) يفتح ملف أخر ويبدأ الكتابه به وهكذا حتى تنتهي قراءت الملف الكبير

يمكن التعديل عليه بشيئ مثل
PHP كود :
Reset(MyFile);
  
i:=1;
  
AssignFile(NewFile,'C:\File'+inttostr(i)+'.txt');
  
Rewrite(NewFile);
Repeat
  Readln
(MyFile,Content);
  if 
copy(Content,1,5)='-----' then Begin
     Content
:='';
     
CloseFile(NewFile);
     
i := i + 1;
     
AssignFile(NewFile,'C:\File'+inttostr(i)+'.txt');
     
Rewrite(NewFile);
  
End;

  
Writeln(NewFile,Content);
Until EOF(MyFile);
CloseFile(MyFile);
CloseFile(NewFile); 
مع اضافة متغير i من نوع Integer
وفرضا ان طول --- هو 5 وموجودة ببداية السطر
شكرا جزاك الله ألف خير
كود :
begin I:=1; AssignFile(NewFile,'C:\File'+IntToStr(I)+'.txt'); Reset(NewFile); Repeat ReadLn(NewFile,Line); IF Copy(Line,1,3)='BY:' Then Begin Line:=''; CloseFile(NewFile); I := I + 1; AssignFile(NewFile,'C:\File'+IntToStr(I)+'.txt'); Reset(NewFile); End; WriteLn(NewFile,Line); Until EOF(NewFile); CloseFile(NewFile); End;
حاولت أن أفتح كل الملفات المقطعه واحد تلو الأخر لمسح جمله مكرره في نهاية كل ملف تبدأ الجمله ب 'by:" وعملت الأتي

ولكن البرنامج لا يشتغل ويعطني I/O خطأ ماذا أفعل؟؟؟

يمكن اختزال تلك الأكواد واضافة سطر واحد للكود السابق ليصبح

PHP كود :
...
  
Reset(MyFile); 
  
i:=1; 
  
AssignFile(NewFile,'C:\File'+inttostr(i)+'.txt'); 
  
Rewrite(NewFile); 
Repeat 
  Readln
(MyFile,Content); 
  if 
copy(Content,1,5)='-----' then Begin 
     Content
:=''; 
     
CloseFile(NewFile); 
     
i := i + 1; 
     
AssignFile(NewFile,'C:\File'+inttostr(i)+'.txt'); 
     
Rewrite(NewFile); 
  
End;
  
  if 
then copy(Content,1,3)<>'by:' then // هذا فقط
  
Writeln(NewFile,Content); 
Until EOF(MyFile); 
CloseFile(MyFile); 
CloseFile(NewFile); 
جزاك الجنه

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

كود :
if Copy(Content,1,3)='PL:'

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

Copy تنسخ جزء من النص
ما علملته في السرطر السابق انني انسخ 3 احرف الاولى من السطر فان وجدتها by: لا اضيف السطر بالملف
الامر يختلف حسب ما نريد عمله

إقتباس :الكلمة موجوده في بداية كل سطر تقريبا

يمكن التعديل هكذا
PHP كود :
...
if 
then copy(Content,1,3)<>'PL:' then Content:=copy(Content,4,length(Content));
  if 
then copy(Content,1,3)<>'by:' then // هذا فقط 
  
Writeln(NewFile,Content);  
Until EOF(MyFile);  
CloseFile(MyFile);  
CloseFile(NewFile); 
لكن هذه تنفع فقط ان كانت ببداية السطر