المشاركات : 37
المواضيع 13
:
: 0
الإنتساب : Jan 2009
السلام عليكم
كيف ممكن أن أفتح ملف text (فعلا موجود عندي ولكن محتوياته كبيره جدا) وأقرأه ثم أكتب محتوياته مقسمه في عدة ملفات أخرى تكست أيضا
حيث محتوى الملف الأساسي عباره عن مقاطع مقاليه يفصل بينها خط ---------
بمعنى أن كل مقطع يجب أن يقرأ من الملف الأساسي ومن ثم يكتب في الملف الجديد و عند الوصول الى هذا الخط ---------- يفتح ملف أخر جديد وهكذا حتى تنتهي محتويات الملف الأساسي
شكرا
المشاركات : 37
المواضيع 13
:
: 0
الإنتساب : Jan 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;
لقد قمت بهذه العمليه لأقرأ الملف وأكتبه في ملف أخر
ولكن السؤال كيف من الممكن أنه عندما يقرأ السطر (---------------------) يفتح ملف أخر ويبدأ الكتابه به وهكذا حتى تنتهي قراءت الملف الكبير
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
يمكن التعديل عليه بشيئ مثل
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 وموجودة ببداية السطر
المشاركات : 37
المواضيع 13
:
: 0
الإنتساب : Jan 2009
المشاركات : 37
المواضيع 13
:
: 0
الإنتساب : Jan 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 خطأ ماذا أفعل؟؟؟
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
يمكن اختزال تلك الأكواد واضافة سطر واحد للكود السابق ليصبح
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);
المشاركات : 37
المواضيع 13
:
: 0
الإنتساب : Jan 2009
جزاك الجنه
سؤال مهم ما هي أفضل طريقه في الدلفي لعمل الأتي
لو يوجد كلمه محدده في أي نص مكرره أيضا عدة مرات ونريد التخلص منها فكيف يمكن عمل هذا
حاولت عمل ذلك بالكود
كود :
if Copy(Content,1,3)='PL:'
طبعا قام بإلغاء كل السطر ولأن هذه الكلمة موجوده في بداية كل سطر تقريبا فقد مسح تقريبا كل السطور
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
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);
لكن هذه تنفع فقط ان كانت ببداية السطر