Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2009, 22:50   #1
[Drumm-are-turG]
 
Регистрация: 04.12.2008
Сообщений: 7
Плохо Копировать файлы из списка

Здравствуйте. Вотъ у меня есть список, тип плей листа с путями файлов мр3, как мне по кнопке скопировать файлы из этого списка, причём конечную директорию выбрать самому, тип opendialog к месту назначения. Всё, что я нашёл по копированию файлов-это прописанный файлы копируются в прописанную директорию. Помогите пожалуйста
[Drumm-are-turG] вне форума Ответить с цитированием
Старый 07.01.2009, 22:56   #2
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Вывод диалога для выбора каталога
uses
ShellAPI, ShlObj;
...

procedure TForm1.Button1Click(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Please specify a directory';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then
begin
SHGetPathFromIDList(lpItemID, TempPath);
ShowMessage(TempPath);
GlobalFreePtr(lpItemID);
end;
end;

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 07.01.2009, 22:57   #3
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Копирование методом потока



procedure FileCopy(const SourceFileName, TargetFileName: string);
var
S, T : TFileStream;
begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
end;
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 08.01.2009, 11:39   #4
[Drumm-are-turG]
 
Регистрация: 04.12.2008
Сообщений: 7
По умолчанию

Спасибо за быстрый ответ, но я не совсем понял, я начинающий. Когда я на кнопку ставллю процедуру открытия диалога, то как мне сделать чтобы после выбора папки начиналось копирование, причём файлов, указанных в listbox-е. Мне как-то нужно вызвать процедуру FileCopy в процедуре на кнопке? И как всё же копировать файлы из списка я так и не понял((
[Drumm-are-turG] вне форума Ответить с цитированием
Старый 09.01.2009, 13:00   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Цитата:
Сообщение от [Drumm-are-turG] Посмотреть сообщение
Спасибо за быстрый ответ, но я не совсем понял, я начинающий. Когда я на кнопку ставллю процедуру открытия диалога, то как мне сделать чтобы после выбора папки начиналось копирование, причём файлов, указанных в listbox-е. Мне как-то нужно вызвать процедуру FileCopy в процедуре на кнопке? И как всё же копировать файлы из списка я так и не понял((
Например так:
Добавьте в uses FileCtrl;

А вот сам код по нажатию кнопки:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i   : integer;
  dir : string;
begin
  if SelectDirectory ('Выберите папку', 'D:\,C:\', dir) then
    begin
      for i := 0 to ListBox1.Items.Count-1 do
          if FileExists (ListBox1.Items.Strings[i]) then
            CopyFile (PChar(ListBox1.Items.Strings[i]), PChar(dir + '\' + ExtractFileName (ListBox1.Items.Strings[i])), false);
    end;
end;
FaTaL вне форума Ответить с цитированием
Старый 09.01.2009, 18:44   #6
[Drumm-are-turG]
 
Регистрация: 04.12.2008
Сообщений: 7
По умолчанию

Поставил данный код на кнопку...Хм...почему-то ничего не происходит после выбора директории....
[Drumm-are-turG] вне форума Ответить с цитированием
Старый 10.01.2009, 00:50   #7
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Цитата:
Сообщение от [Drumm-are-turG] Посмотреть сообщение
Поставил данный код на кнопку...Хм...почему-то ничего не происходит после выбора директории....
А у Вас в ЛистБоксе полные имена файлов с путями прописаны?
FaTaL вне форума Ответить с цитированием
Старый 10.01.2009, 20:22   #8
[Drumm-are-turG]
 
Регистрация: 04.12.2008
Сообщений: 7
По умолчанию

>А у Вас в ЛистБоксе полные имена файлов с путями прописаны?
да вроде, я не совсем понимаю как именно, я из исходника плеера оставил плейлист. Путь прописан а в лист боксе только имя и расшерение файла...
[Drumm-are-turG] вне форума Ответить с цитированием
Старый 11.01.2009, 08:31   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Цитата:
Сообщение от [Drumm-are-turG] Посмотреть сообщение
>А у Вас в ЛистБоксе полные имена файлов с путями прописаны?
да вроде, я не совсем понимаю как именно, я из исходника плеера оставил плейлист. Путь прописан а в лист боксе только имя и расшерение файла...
Конечно он не будет копировать, т.к. исходного то файла найти без пути не может.
FaTaL вне форума Ответить с цитированием
Старый 11.01.2009, 17:03   #10
[Drumm-are-turG]
 
Регистрация: 04.12.2008
Сообщений: 7
По умолчанию

Спасибо огромное, вы очень мне помогли!!! Вроде копируется...
[Drumm-are-turG] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копировать лист и задать имя Leanna Microsoft Office Excel 5 19.02.2008 16:40
Как копировать и одновременно переименовывать файлы? eriser Помощь студентам 4 17.01.2008 17:51
как копировать файлы Kaspersky Anti-Virus Personal\5.0\Bases\*.* Podlec Безопасность, Шифрование 3 16.11.2007 11:37