السلام عليكــم ورحمـة الله وبركاتــه ،،
سوف نقوم ببناء إجرائيتان (procedure) من أجل هذا :
الإجراء الأول من خلاله نقوم بتقسيم الملف وتعريف فورمات جديدة(EXT) للملفات الناتجة وفي حالتنا هنا إخترت :.Arabteam2000_
procedure SplitFile(FileName : TFileName; FilesByteSize : Integer) ;
var
A, B: TFileStream;
AB : integer;
SplitName: String;
begin A := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite) ;
try
for AB := 1 to Trunc(A.Size / FilesByteSize) + 1 do
begin SplitName := ChangeFileExt(FileName, Format('%s%d', ['.Arabteam2000_',AB])) ;
B := TFileStream.Create(SplitName, fmCreate or fmShareExclusive) ;
try
if A.Size - A.Position < FilesByteSize then
FilesByteSize := A.Size - A.Position;
B.CopyFrom(A, FilesByteSize) ;
finally
B.Free;
end;
end;
finally
A.Free;
end;
end;الإجراء الثاني نقوم من خلاله بتجميع الأجزاء الناتجة عن عملية التقسيم الأولى :
procedure MergeFiles(FirstSplitFileName, OutFileName : TFileName) ;
var
A, B: TFileStream;
AB: integer;
begin AB := 1;
A := TFileStream.Create(OutFileName, fmCreate or fmShareExclusive) ;
try
while FileExists(FirstSplitFileName) do
begin B := TFileStream.Create(FirstSplitFileName, fmOpenRead or fmShareDenyWrite) ;
try
A.CopyFrom(B, 0) ;
finally
B.Free;
end;
Inc(AB) ;
FirstSplitFileName := ChangeFileExt(FirstSplitFileName, Format('%s%d', ['.Arabteam2000_',AB])) ;
end;
finally
A.Free;
end;
end;بعد كتابة الإجرائين نضع مايلي على الفورم :
4 Button
2 Opendialog
2 Edit
1 ComboBox يكون محتواه كالتالي :(64.128.256.512.1024.10240.102400....)حيث أن هذه القيم تمثل عدد البايتات التي سنقسم عليها حجم الملف والخيار نتركه للمستخدم
ليكون الشكل في النهاية كالتالي:
ربما يكون المثال في حاجة لبعض التعديل والتنقيح
والمهم دائما هو الفكرة
تجدون المثال مع المرفقات
تم حذف المرفق بسبب احتواءه على فيروس, بعد تنبيه الاخ tahasit جزاه الله خيراً, لذلك يرجى من الذين قاموا بتحميل الملف ان ينتبهوا إلى الامر.
