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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 21:29   #1
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Сообщение Копирование найденых файлов Delphi

Здравствуйте! может кто помочь? надо скопировать все найденные файлы. а как это сделать незнаю.
Код:
procedure GetAllFiles(mask: string);
var
  search: TSearchRec;
  directory: string;
begin
  directory := ExtractFilePath(mask);
  if FindFirst(mask, $23, search) = 0 then
  begin
     repeat
        Form1.ListBox1.Items.Add(directory + search.Name);
        copyfile(directory + search.Name, 'c:\1\'+directory + search.Name);
        Inc(Count);
     until FindNext(search) <> 0;
  end;
  if FindFirst(directory + '*.*', faDirectory, search) = 0 then
  begin
     repeat
        if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
           GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask));
     until FindNext(search) <> 0;
     FindClose(search);
  end;
end;
Спасибо!
leonw вне форума Ответить с цитированием
Старый 11.01.2010, 21:35   #2
_bAd_
Пользователь
 
Регистрация: 11.01.2010
Сообщений: 21
По умолчанию

фрагмент << 'c:\1\'+directory + search.Name >> занеси в какую-нить строковую переменночку и посмотри чо там. Там скорее всего некорректный путь
_bAd_ вне форума Ответить с цитированием
Старый 11.01.2010, 22:39   #3
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Печаль красная линия

не даже не помогает.
Код:
CopyFile(directory + search.Name,'c:\1\'+directory + search.Name,true);
как ставлю кавычки ошибка исчезает, но копирование тогда невозможно.
а без кавычек красным загарается строка
leonw вне форума Ответить с цитированием
Старый 11.01.2010, 22:49   #4
_bAd_
Пользователь
 
Регистрация: 11.01.2010
Сообщений: 21
По умолчанию

я не совсем понял что изменилось. попробую намекнуть:

Эта сумма строк
'c:\1\'+directory + search.Name
скорее всего хранит что-то типа:
c:\1\D:\Directory\File.ext
а это недопустимый путь если я не ошибаюсь

.. лана. смари... ты суммируешь слудующие строки:
'c:\1\' которая равна естественно 'c:\1\'
directory которая равна какому-то пути, включая имя логического диска
search.Name - имя файла
Всё пучком , но в сумме получится "c:\1\D:\...", что не есть гуд
И дело тут не в ковычках.

Последний раз редактировалось _bAd_; 11.01.2010 в 22:53.
_bAd_ вне форума Ответить с цитированием
Старый 11.01.2010, 23:07   #5
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Стрелка нет

_bAd_ - думаю наверное ты ошибаешься, может и не прав я?
моленько поэксперементировал.
Код:
CopyFile(PChar(directory + search.Name),PChar(directory + search.Name),true);
перевел в pchar, (не знал что в copyfile стрниг не лезит).
потом сделал так:
Код:
CopyFile(PChar(directory + search.Name),'c:\1\1.doc',true);
скопировал первый найденый файл.
потом попытался подставить с:\1\ рядом с директорией.
Код:
CopyFile(PChar(directory + search.Name),'с:\1\'+PChar(directory + search.Name),true);
вылезла ошибка - красная полоска т.е нельзя запустить программу.
и так пробывал
Код:
CopyFile(PChar(directory + search.Name),'c:\1\'+search.Name,true);
leonw вне форума Ответить с цитированием
Старый 11.01.2010, 23:12   #6
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Мне кажется это то, что вам нужно.
PS: Писал на ходу, не проверял, строго не судите

Код:
  I := FindFirst(Здесь директория в которой ищем + рассширение, FAAnyFile, SR);
  while I = 0 do
  begin
        if (SR.Name = '.') or (SR.Name = '..') then
        begin
           I := FindNext(SR);
           Continue;
        end;
        S := SR.Name;
        CopyFile(От куда, и куда, тру);
        I := FindNext(SR);
  end;
RIO вне форума Ответить с цитированием
Старый 11.01.2010, 23:13   #7
leonw
Пользователь
 
Регистрация: 08.08.2008
Сообщений: 39
Радость Готово

Все додумал:
Код:
         files:='c:\1\'+search.Name;
         CopyFile(PChar(directory + search.Name),PChar(files),true);
мучился мучился но до думал!
Спасибо!!!!
leonw вне форума Ответить с цитированием
Старый 11.01.2010, 23:19   #8
_bAd_
Пользователь
 
Регистрация: 11.01.2010
Сообщений: 21
По умолчанию

... (ругань)
_bAd_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование файлов. Leo20 Общие вопросы Delphi 6 13.11.2009 17:03
Копирование файлов VadEr Помощь студентам 4 06.04.2009 18:49
Копирование файлов Artificial Помощь студентам 5 05.06.2008 18:42
копирование файлов matus Общие вопросы Delphi 2 07.11.2007 21:57