delphi4arab منتديات دلفي للعرب
كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى (/showthread.php?tid=684)



كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - NOna - 09-03-2009

السلام عليكم

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


شكرا


كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - NOna - 10-03-2009

كود :
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;
لقد قمت بهذه العمليه لأقرأ الملف وأكتبه في ملف أخر

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


كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - محمد عبد العزيز - 10-03-2009


يمكن التعديل عليه بشيئ مثل
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 وموجودة ببداية السطر



كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - NOna - 10-03-2009

شكرا جزاك الله ألف خير


كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - NOna - 11-03-2009

كود :
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 خطأ ماذا أفعل؟؟؟


كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - محمد عبد العزيز - 11-03-2009


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

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); 



كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - NOna - 11-03-2009

جزاك الجنه

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

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

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


كيف ممكن أن أقرأ ملف text وأكتب محتواه في عدة ملفات أخرى - محمد عبد العزيز - 11-03-2009


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); 
لكن هذه تنفع فقط ان كانت ببداية السطر