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

Вниз

Копирование n-ое кол-во файлов в один   Найти похожие ветки 

 
CoolMan ©   (2004-10-24 23:25) [0]

Уважаемые Мастера!

Читал много статей по сабжу на форуме, но то что нужно не нашел.

Помогите пожалуйста:

Проблема следующего плана: как можно скопировать неизвестное количество файлов с разными разрешениями в один. Пути к копируемым файлам находится в ListView / Columns / 0 - Name. Путь файла, в который копируется, находится в Edit.

Всем примного благодарен!


 
Digitman ©   (2004-10-25 09:58) [1]


> с разными разрешениями


может быть таки "расширениями", а не "разрешениями" ?


> неизвестное количество


т.е. Listview содержит лишь список каталогов, откуда должны быть взяты файлы ?


 
CoolMan ©   (2004-10-25 10:11) [2]


> т.е. Listview содержит лишь список каталогов, откуда должны
> быть взяты файлы ?


В Listview содержится список каталогов и название файла.
Наример:
C:\xxx\yyy.html
D:\111\222\333.txt
и т.д.


 
Ozone ©   (2004-10-25 10:22) [3]

BlockRead, BlockWrite


 
Digitman ©   (2004-10-25 10:23) [4]

тогда что понимать под "неизвестное количество файлов", если количество файлов есть кол-во элементов списка ListView, т.е. значение св-ва ListView.Items.Count ?


 
TUser ©   (2004-10-25 10:47) [5]


> как можно скопировать неизвестное количество файлов с разными
> разрешениями в один.

http://www.aidaim.com/products/sfs/sfs_spec.php - оно?


 
Digitman ©   (2004-10-25 11:11) [6]


> 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;


 
Amoeba ©   (2004-10-25 11:24) [7]


> TUser ©   (25.10.04 10:47) [5]
>
> > как можно скопировать неизвестное количество файлов с
> разными
> > разрешениями в один.
>
> http://www.aidaim.com/products/sfs/sfs_spec.php - оно?

Я лично использую это решение.

Судя по вопросу (раз расширения разные, то и форматы - должны быть разными, и как-то станно было бы использовать простое их "сшивание", как в ответе [6]), задача решается с помощью SFS (библиотека Single File System).


 
Плохиш ©   (2004-10-25 11:32) [8]

А чем команда DOS copy не угодила?


 
TUser ©   (2004-10-25 11:37) [9]


> А чем команда DOS copy не угодила?

А надо в один файл


 
Amoeba ©   (2004-10-25 11:40) [10]


> Плохиш ©   (25.10.04 11:32) [8]
> А чем команда DOS copy не угодила?

Наверное автору надо потом иметь легкий доступ к этим файлам, объединенным в один.


 
Anatoly Podgoretsky ©   (2004-10-25 12:13) [11]

TUser ©   (25.10.04 11:37) [9]
Ну и копируй в один файл, предварительно проведи ликбез по этой команде


 
TUser ©   (2004-10-25 12:16) [12]


> Ну и копируй в один файл, предварительно проведи ликбез
> по этой команде

Предполагается, что еще и разделять надо уметь


 
ЮрийК ©   (2004-10-25 16:37) [13]

Первые четыре байта - количество файлов (К)
Последние (К * 4) байтов - позиции начала каждого файла в едином файле
Ну и используй CreateMappedFile/FileMappedView и т.д. (Читай Рихтера в общем).


 
Amoeba ©   (2004-10-25 18:14) [14]


> ЮрийК ©   (25.10.04 16:37) [13]
> Первые четыре байта - количество файлов (К)
> Последние (К * 4) байтов - позиции начала каждого файла
> в едином файле
> Ну и используй CreateMappedFile/FileMappedView и т.д. (Читай
> Рихтера в общем).

А с SFS ни о чем таком думать не надо (ссылку хоть смотрел?). Просто открываешь SFSStream с указанием пути как к обычному файлу. Легко добавлять, удалять, перемещать, изменять.


 
ЮрийК ©   (2004-10-25 19:57) [15]

"А с SFS ни о чем таком думать не надо (ссылку хоть смотрел?). Просто открываешь SFSStream с указанием пути как к обычному файлу. Легко добавлять, удалять, перемещать, изменять."

А SFS вроде как платный? Есть о чём подумать значит. А что сложного в том, что я привёл? Единственное, что ещё и имена добавить нужно наверное.


 
Amoeba ©   (2004-10-25 20:00) [16]


> А SFS вроде как платный?

Бесплатный без исходников и для некоммерческого использования (только NagScreen при запуске программы). Сам успешно использую. Если надо, могу дать ссылку (хотя они уже были раннее в форуме) где можно скачать исходники.


 
Amoeba ©   (2004-10-25 20:01) [17]

И еще. По поводу удобства. Это как конторские счеты и калькулятор.


 
CollMan   (2004-10-27 16:22) [18]

Огромное всем спасибо!!! Особая благодарность 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
==============

Заранее Всем огромная благодарность!!!


 
begin...end ©   (2004-10-27 16:30) [19]


> [18] CollMan   (27.10.04 16:22)

А зачем нужны эти красивости в виде "------END-----" и т. д.? Это текстовый файл будет, что ли? Если нет, то достаточно просто записывать, например, сначала путь к очередному присоединённому файлу, потом размер, потом само содержимое. Никаких проблем с последующей расшифровкой вроде не должно возникнуть.


 
Алхимик ©   (2004-10-27 17:08) [20]

А архиватором воспользоваться?
Вызывать через ShellExecute.



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

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

Наверх




Память: 0.51 MB
Время: 0.038 c
14-1098561157
snif
2004-10-23 23:52
2004.11.14
Удаленный рабочий стол


1-1099426141
SteelMan
2004-11-02 23:09
2004.11.14
что за файл qtintf.dll


1-1098962502
Alibabai
2004-10-28 15:21
2004.11.14
Помогите разобраться с ListView


1-1099285151
Anics
2004-11-01 07:59
2004.11.14
Как отловить действие пользователя "Завершение работы" ?


1-1099211898
Maxim____
2004-10-31 11:38
2004.11.14
Объекты в потоке