Показать сообщение отдельно
  #3  
Старый 14.01.2010, 11:54
OnzMill OnzMill вне форума
Прохожий
 
Регистрация: 06.10.2009
Сообщения: 48
Репутация: 10
По умолчанию

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)
Ответить с цитированием