Главная страница
    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.047 c
14-1095089567
Knight
2004-09-13 19:32
2004.10.03
А что такое Альтернативный ввод текста и где его найти?


8-1087894955
Borealis
2004-06-22 13:02
2004.10.03
Изображения ключевых кадров из авишки (RIFF_AVI)


4-1092100856
Baloo
2004-08-10 05:20
2004.10.03
Перехватить курсорную клавишу и прибить


14-1095078333
bsa
2004-09-13 16:25
2004.10.03
как узнать кодировку страниц на http с помощью WinAPI


4-1092994681
eli
2004-08-20 13:38
2004.10.03
Как узнать раскладку клавиатуры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский