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

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


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

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

يمكن التعديل عليه بشيئ مثل
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 وموجودة ببداية السطر
الرد
#4
شكرا جزاك الله ألف خير
الرد
#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 خطأ ماذا أفعل؟؟؟
الرد
#6

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

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); 
الرد
#7
جزاك الجنه

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

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

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

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


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


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