Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Разбиение файла на части   Найти похожие ветки 

 
anonymous   (2004-09-13 11:16) [0]

Добрый день (вечер)!!!! Помогите пожалуйста. Необходимо файл разбить на части, размером меньше, а затем собрать в первоначальный вид. Пробовал использовать компонент ZIP TV, но не смог нейти данной функции и в примерах (поставляемых с етим компонентом) также ничего похожего не нашёл.


 
kukuikar ©   (2004-09-13 11:36) [1]

так тебе нужна прога или алгоритм?


 
icebeerg ©   (2004-09-13 12:45) [2]

var f:file of char;

...

AssignFile(f,...
repeat
...
until EOF(f);

Сам идею разовьеш?


 
anonymous   (2004-09-14 09:34) [3]

kukuikar: Нужен алгоритм, а лучше готовая процедура.

icebeerg: Открыть файл как символьный это понятно, а как зделить из первых 200 символов новый файл? И как потом собрать все куски в один файл? Подскажи пожалуйста!


 
Рамиль ©   (2004-09-14 09:38) [4]

TFileStream + F1


 
dima_shapkin   (2004-09-14 10:07) [5]

CreateFile, ReadFile, WriteFile...
See Windows SDK


 
icebeerg ©   (2004-09-14 10:28) [6]

>anonymous   (14.09.04 09:34) [3]
Нет, ну это издевательство какое-то. Ты вообще хоть книжки то читаеш? Головой думаш? Если до вечера никто не сподобиться кинуть тебе готовый алгоритм так уж и быть сделаю...


 
kukuikar ©   (2004-09-14 10:32) [7]

//резать
//размер кусков указывается в байтах
function SplitFile(FileName : TFileName; SizeofFiles :Integer): Boolean;
var
 i : Word;
 fs, sStream: TFileStream;
 SplitFileName: String;
begin
 fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
 try
   for i := 1 to Trunc(fs.Size / SizeofFiles) + 1 do
   begin
     SplitFileName := ChangeFileExt(FileName, "."+ FormatFloat("000", i));
     sStream := TFileStream.Create(SplitFileName, fmCreate or fmShareExclusive);
     try
       if fs.Size - fs.Position < SizeofFiles then
         SizeofFiles := fs.Size - fs.Position;
       sStream.CopyFrom(fs, SizeofFiles);
     finally
       sStream.Free;
     end;
   end;
 finally
   fs.Free;
 end;
end;

//клеить
//чтобы собрать файлы нужно указать первый кусок.
//он будет с расширением *.001
function CombineFiles(FileName, CombinedFileName : TFileName) : Boolean;
var
 i: integer;
 fs, sStream: TFileStream;
 filenameOrg: String;
begin
 i := 1;
 fs := TFileStream.Create(CombinedFileName, fmCreate or fmShareExclusive);
 try
   while FileExists(FileName) do
   begin
     sStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
     try
       fs.CopyFrom(sStream, 0);
     finally
       sStream.Free;
     end;
     Inc(i);
     FileName := ChangeFileExt(FileName, "."+ FormatFloat("000", i));
   end;
 finally
   fs.Free;
 end;
end;
//вот собственно и все
//можно еще добавить проверку CRC32


 
Рамиль ©   (2004-09-14 10:48) [8]

icebeerg ©   (14.09.04 10:28) [6]
Только не надо делать

> var f:file of char;
это будет через одно место.


 
icebeerg ©   (2004-09-14 10:50) [9]

> kukuikar ©   (14.09.04 10:32) [7]
Кинул таки anonymous"у функции. А я уже сам начал писать с использование BlockRead и BlockWrite. Но твоего кода хватит.
А склеить файлы вообще тривиально можно коммандой copy... ;)


 
icebeerg ©   (2004-09-14 10:53) [10]

> Рамиль ©   (14.09.04 10:48) [8]
Согласен, но это первое, что на ум приходит. Читать и писать файлы посимвольно это... :)


 
kukuikar ©   (2004-09-14 11:37) [11]


> А склеить файлы вообще тривиально можно коммандой copy...
> ;)

мона-мона:)


 
anonymous   (2004-09-15 10:19) [12]

Спасибосо всем кто откликнулся.
Код kukuikar"а нормольно работает. Ему отдельное спасибо!!!!



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
14-1094822954
jack128
2004-09-10 17:29
2004.10.03
Как скопировать содержимое окна CPU


14-1094822744
DSKalugin
2004-09-10 17:25
2004.10.03
Компоненты доступа к данным


1-1095339279
Klopan
2004-09-16 16:54
2004.10.03
TInifiles


3-1094014169
NewDelpher
2004-09-01 08:49
2004.10.03
результат работы sp_lock в таблицу


3-1094105109
top
2004-09-02 10:05
2004.10.03
Литература по проектированию баз данных