Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
1-1095235389
Григорьев Антон
2004-09-15 12:03
2004.10.03
Как открыть страницу в новом окне браузера?


3-1094487730
Arnold
2004-09-06 20:22
2004.10.03
Как можно зайти в БД без запуска сервера SYSDBA этой базы данных


11-1081078411
Василий
2004-04-04 15:33
2004.10.03
Установить KOL пакет


1-1095231354
Black
2004-09-15 10:55
2004.10.03
Как разбить текст на части?


3-1094193006
R.O.O.T
2004-09-03 10:30
2004.10.03
DBGrid - получение данных





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский