![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Копирование n-ое кол-во файлов в один [D6, Win95/98, WinME, NT4, Win2k, WinXP]
CoolMan © (2004-10-24 23:25:00)Уважаемые Мастера!
Читал много статей по сабжу на форуме, но то что нужно не нашел.
Помогите пожалуйста:
Проблема следующего плана: как можно скопировать неизвестное количество файлов с разными разрешениями в один. Пути к копируемым файлам находится в ListView / Columns / 0 - Name. Путь файла, в который копируется, находится в Edit.
Всем примного благодарен!
Алхимик (2004-10-27 17:08:00) [1]А архиватором воспользоваться?
Вызывать через ShellExecute.
begin...end (2004-10-27 16:30:00) [2]
> [18] CollMan (27.10.04 16:22)
А зачем нужны эти красивости в виде "------END-----" и т. д.? Это текстовый файл будет, что ли? Если нет, то достаточно просто записывать, например, сначала путь к очередному присоединённому файлу, потом размер, потом само содержимое. Никаких проблем с последующей расшифровкой вроде не должно возникнуть.
CollMan (2004-10-27 16:22:00) [3]Огромное всем спасибо!!! Особая благодарность 2 Digitman!!! То что надо.
Не могли бы Вы помочь вот с чем: используя ответ [6] от Digitman
получается файл со следующей картиной:
xxxxxxxx
xxxxxxxx
xxyyyyyy
yyyyyyyy
где запись с "х" - 1 файл, а "у" - второй.
Как сделать так чтобы конечный файл имел вид:
C:\xxx\xxx.html
--------------
xxxxxxxxxxx
xxxxxxxxxxx
xxx
------END-----
Size: 183827
==============
D:\yyy\yyy.txt
--------------
yyyyyyyyyyy
yyyyy
------END-----
Size: 84775
==============
Заранее Всем огромная благодарность!!!
Amoeba (2004-10-25 20:01:00) [4]И еще. По поводу удобства. Это как конторские счеты и калькулятор.
Amoeba (2004-10-25 20:00:00) [5]
> А SFS вроде как платный?
Бесплатный без исходников и для некоммерческого использования (только NagScreen при запуске программы). Сам успешно использую. Если надо, могу дать ссылку (хотя они уже были раннее в форуме) где можно скачать исходники.
ЮрийК (2004-10-25 19:57:00) [6]"А с SFS ни о чем таком думать не надо (ссылку хоть смотрел?). Просто открываешь SFSStream с указанием пути как к обычному файлу. Легко добавлять, удалять, перемещать, изменять."
А SFS вроде как платный? Есть о чём подумать значит. А что сложного в том, что я привёл? Единственное, что ещё и имена добавить нужно наверное.
Amoeba (2004-10-25 18:14:00) [7]
> ЮрийК © (25.10.04 16:37) [13]
> Первые четыре байта - количество файлов (К)
> Последние (К * 4) байтов - позиции начала каждого файла
> в едином файле
> Ну и используй CreateMappedFile/FileMappedView и т.д. (Читай
> Рихтера в общем).
А с SFS ни о чем таком думать не надо (ссылку хоть смотрел?). Просто открываешь SFSStream с указанием пути как к обычному файлу. Легко добавлять, удалять, перемещать, изменять.
ЮрийК (2004-10-25 16:37:00) [8]Первые четыре байта - количество файлов (К)
Последние (К * 4) байтов - позиции начала каждого файла в едином файле
Ну и используй CreateMappedFile/FileMappedView и т.д. (Читай Рихтера в общем).
TUser (2004-10-25 12:16:00) [9]
> Ну и копируй в один файл, предварительно проведи ликбез
> по этой команде
Предполагается, что еще и разделять надо уметь
Anatoly Podgoretsky (2004-10-25 12:13:00) [10]TUser © (25.10.04 11:37) [9]
Ну и копируй в один файл, предварительно проведи ликбез по этой команде
Amoeba (2004-10-25 11:40:00) [11]
> Плохиш © (25.10.04 11:32) [8]
> А чем команда DOS copy не угодила?
Наверное автору надо потом иметь легкий доступ к этим файлам, объединенным в один.
TUser (2004-10-25 11:37:00) [12]
> А чем команда DOS copy не угодила?
А надо в один файл
Плохиш (2004-10-25 11:32:00) [13]А чем команда DOS copyне угодила?
Amoeba (2004-10-25 11:24:00) [14]
> TUser © (25.10.04 10:47) [5]
>
> > как можно скопировать неизвестное количество файлов с
> разными
> > разрешениями в один.
>
> http://www.aidaim.com/products/sfs/sfs_spec.php- оно?
Я лично использую это решение.
Судя по вопросу (раз расширения разные, то и форматы - должны быть разными, и как-то станно было бы использовать простое их "сшивание", как в ответе [6]), задача решается с помощью SFS (библиотека Single File System).
Digitman (2004-10-25 11:11:00) [15]
> CoolMan
var
Source, Target: TStream;
..
Target := TFileStream.Create(Edit.Text, fmcreate);
try
with ListView do
for i := 0 to Items.Count - 1 do
begin
Source := TFileStream.Create(Items[i].Caption, fmRead);
try
Target.CopyFrom(Source, Source.Size);
finally
Source.Free;
end;
end;
finally
Target.Free;
end;
TUser (2004-10-25 10:47:00) [16]
> как можно скопировать неизвестное количество файлов с разными
> разрешениями в один.
http://www.aidaim.com/products/sfs/sfs_spec.php- оно?
Digitman (2004-10-25 10:23:00) [17]тогда что понимать под "неизвестное количество файлов", если количество файлов есть кол-во элементов списка ListView, т.е. значение св-ва ListView.Items.Count ?
Ozone (2004-10-25 10:22:00) [18]BlockRead, BlockWrite
CoolMan (2004-10-25 10:11:00) [19]
> т.е. Listview содержит лишь список каталогов, откуда должны
> быть взяты файлы ?
В Listview содержится список каталогов и название файла.
Наример:
C:\xxx\yyy.html
D:\111\222\333.txt
и т.д.
Digitman (2004-10-25 09:58:00) [20]
> с разными разрешениями
может быть таки "расширениями", а не "разрешениями" ?
> неизвестное количество
т.е. Listview содержит лишь список каталогов, откуда должны быть взяты файлы ?