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

Вниз

Копирование 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.04 c
3-1097669888
zorik
2004-10-13 16:18
2004.11.14
Computed by


14-1099084497
Alein
2004-10-30 01:14
2004.11.14
SkinMaker_ство.


14-1098448011
Qwest
2004-10-22 16:26
2004.11.14
Задачи.


1-1099130123
Artemiy2004
2004-10-30 13:55
2004.11.14
Как скопировать небольшую часть картинки в новый битмап?


4-1096825772
avs
2004-10-03 21:49
2004.11.14
В старых мониторах





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