1 - обявляеш глобальную переменную типа
FromF2: TFileStream;
2 - открываеш файл и загоняеш в поток
Код:
var
NBlok, kys: Variant; // для определения количества кусков
i, k: Integer; // счетчик.
Tofile: TFileStream;
fre: String;
Vile: Integer;
home, endi, endFrom, telo: integer;
begin
if OpenDialog1.Execute then // открыт опен длг
begin
FromF2:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead);//открываем файл
// Edit1.Text:=OpenDialog1.FileName;
//Edit2.Text:=IntToStr(FromF2.Size)+' байт'; // инфо о файле
end;
//---------------------------------------------------
//секторов С ПЕРВОГО а не 0!!!!!!!!!!
NBlok:=FromF2.Size/512; // длина в секторах
// Проверка на количество реальных блоков.
if NBlok*512=FromF2.Size then
begin
NBlok:=NBlok+1;
end;
// Edit3.Text:=IntToStr(NBlok)+' сект';
// Label3.Caption:=IntToStr(FromF2.Size);
// Label4.Caption:=IntToStr(NBlok);
.....
FromF2.Seek(0, soFromBeginning); // перевод каретки в начало диска.
kys:=NBlok;
endFrom:=FromF2.Size;
Vile:=kys*512;
for i:=1 to kys do // установка количества файлов
begin
telo:=vile;
if i=kys then
begin
telo:=endFrom-(kys-1)*Vile;// определение размера последнего куска
end;
fre:=IntToStr(i)+'.byt';
Tofile:=TFileStream.Create(DirectoryListBox1.Directory+'\'+fre, fmCreate); // выбор папки сохранения файлов
Tofile.CopyFrom(FromF2, telo); // само сохранение инфы.
Tofile.Free;
end;
FromF2.Free;
end;
Admin: Пользуемся тегами!
__________________
Говори что думаешь, думай, что говоришь.
(Шоссе 60)
|