Dzielenie

0

Jak podzielić plik na dwie części, ale tak żeby jedna część miała 1bajt,
a druga część resztę?

0

Stary poszukaj sobie, jestem pewien, ze na tej stronie znajduje sie przyklad.

0

<ort>na pewno </ort>jest.

mozesz skorzystac z blockread, blockwrite (czy cos takiego, nie pamietam dokladnie), filesize, itp

0

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;
0

Na 4p jest odpowiedni program (w kodach źrodłowych); wystarczy, że go trochę zmodyfikujesz :-) .

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1