Jak podzielić plik na dwie części, ale tak żeby jedna część miała 1bajt,
a druga część resztę?
Stary poszukaj sobie, jestem pewien, ze na tej stronie znajduje sie przyklad.
<ort>na pewno </ort>jest.
mozesz skorzystac z blockread, blockwrite (czy cos takiego, nie pamietam dokladnie), filesize, itp
Pisane bez sprawdzenia - na żywca z helpa :-).
var
plikDoPodzialu, plik1bajt, plikReszta :TFileStream;
nazwaPlikDoPodzialu, nazwaPlik1Bajt, nazwaPlikReszta :AnsiString;
rozmiar :Longint;
begin
plikDoPodzialu := TFileStream.Create(nazwaPlikDoPodzialu , fmOpenRead);
plik1bajt := TFileStream.Create(nazwaPlik1Bajt, fmCreate);
plikReszta := TFileStream.Create(nazwaPlikReszta, fmCreate);
rozmiar := plikDoPodzialu.Seek(0, soFromCurrent);
plik1bajt.CopyFrom(plikDoPodzialu, 1);
plikReszta.CopyFrom(plikDoPodzialu, rozmiar-1);
plikDoPodzialu.Free;
plik1bajt.Free;
plikReszta.Free;
end;
Na 4p jest odpowiedni program (w kodach źrodłowych); wystarczy, że go trochę zmodyfikujesz :-) .
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var plikDoPodzialu, plik1bajt, plikReszta :file of byte;
a:byte;
begin
opendialog1.Execute;
if opendialog1.FileName <> ''then
begin
assignfile(plikDoPodzialu,opendialog1.FileName);
reset(plikDoPodzialu);
assignfile(plik1bajt,'1');
rewrite(plik1bajt);
read(plikDoPodzialu,a);
write(plik1bajt,a);
closefile(plik1bajt);
assignfile(plikReszta,'2');
rewrite(plikReszta);
while not(eof(plikDoPodzialu)) do
begin
read(plikDoPodzialu,a);
write(plikReszta,a);
end;
closefile(plikDoPodzialu);
closefile(plikReszta)
end;
end;
end.