![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
извени, не успел отписатся.
на предедущюю тему по поводу розбития файлов на куски. 1 - открываеш файл и загоняеш его в поток. 2 - узнаеш длину потока 3 - исходя из длинны потока и размера блока, узнаеш количество блоков (есть определенные нюансы )))))) 4 - цикл, от 0 до n - кусков 5 - создать поток (новый файл) 6 - функцией CopyFrom(); копируеш нужный обьем с исходного файла (потока) в созданный. да и все вообщем. копирование быстрее, нежели копирует сама винда. нужен исходный код - пиши, выложу. |
|
#2
|
||||
|
||||
|
Скинь код, буду очень признателен
|
|
#3
|
|||
|
|||
|
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, 14.01.2010 в 12:50. |
|
#4
|
||||
|
||||
|
Спасибо, буду разбираться
|