Arquivos - como fazer um split |
Top Previous Next |
Question/Problem/Abstract:
split large size of file into more file Answer:
var FromF, ToF : File; Buf : array of char; NumRead,NumWritten: Integer;
function Dosya_Bol:Byte; var i : Integer; begin for i := 1 to 700 do begin BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); Form1.PB.Position := Form1.PB.Position+NumRead; if NumRead = 0 then begin Dosya_Bol := 0; Break; end; if NumWritten <> NumRead then begin Dosya_Bol := 1; Break; end; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i,boy : Integer; dad : String; yer : Byte; begin OD.Filter := 'Tüm Dosyalar|*.*'; if OD.Execute then begin Label1.Caption:=OD.FileName; PB.Position:=0; AssignFile(FromF, OD.FileName); Reset(FromF, 1); PB.Max := FileSize(FromF); i := 1; repeat dad := 'file' + IntToStr(i) + '.blt'; AssignFile(ToF, dad); Rewrite(ToF, 1); yer := dosya_bol; CloseFile(ToF); i := i + 1; until yer = 0; CloseFile(FromF);
Memo1.Lines.Clear; Memo1.Lines.Add(OD.FileName); Memo1.Lines.Values['ds'] := IntToStr(i-1); Memo1.Lines.SaveToFile('ballog.blf'); end; end;
procedure TForm1.Button2Click(Sender: TObject); var d_s,i : Integer; d_a : String; begin OD.Filter := 'Balta dosyalarý|*.blf'; if OD.Execute then begin Memo1.Lines.LoadFromFile(OD.FileName); d_a := Memo1.Lines[0]; d_s := StrToInt(Memo1.Lines.Values['ds']);
AssignFile(ToF, d_a); Rewrite(ToF, 1); for i:=1 to d_s do begin AssignFile(FromF, 'file' + IntToStr(i) + '.blt'); Reset(FromF, 1); PB.Position := 0; PB.Max := FileSize(FromF); repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); PB.Position := PB.Position + NumRead; until (NumRead = 0) or (NumWritten <> NumRead); CloseFile(FromF); end; CloseFile(ToF); end; end;
|