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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2013, 10:06   #1
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
Радость Все тот же ListBox

Ребята, прошу прощения если такая тема уже была.
Но вопрос в следующем: есть ListBox в нем результаты поиска файлов по папке вместе с подпапками, мне надо сделать перемещние всех файлов из ListBox в папку. Только в списке получается к примеру 89 файлов, а перемещает только 77, так как есть файлы с одинаковым именем, но в разных подпапках , как сделать так чтобы перемещались все 89 файлов?

Вот код для перемещения:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  CreateDir('C:\Служебная');
  begin
    for i := 0 to ListBox1.Items.Count - 1 do
    begin
      if FileExists(ListBox1.Items.Strings[i]) then
      begin
        CopyFile(PChar(ListBox1.Items.Strings[i]), PChar('C:\Служебная' + ExtractFileName(ListBox1.Items.Strings[i])), False);
        DeleteFile(ListBox1.Items.Strings[i]);
      end;
    end;
  end;
end;
Учиться, учиться и еще раз учиться!

Последний раз редактировалось Stilet; 19.06.2013 в 15:52.
Eugene_Stoun вне форума Ответить с цитированием
Старый 19.06.2013, 10:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
function NewFileName(FileName: String): String;
var n: Integer;
begin
  Result:=FileName;
  n:=0;
  while True do begin
    if not FileExists(Result) then Exit;
    Inc(n);
    Result:=Format('%s (%d)',[FileName,n]);
  end;
end;

и вместо
CopyFile(PChar(ListBox1.Items.Strin gs[i]), PChar('C:\Служебная' + ExtractFileName(ListBox1.Items.Stri ngs[i])), False);

вставить
CopyFile(PChar(ListBox1.Items.Strings[i]),PChar(NewFileName('C:\Служебная\'+ExtractFileName(ListBox1.Items.Strings[i]))), False);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.06.2013, 11:17   #3
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

Все отлично, только нумерацию в скобках, ставит после расширения файла
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Старый 19.06.2013, 11:36   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да, прозевал. Выделите расширение, нумерацию после имени файла без расширения, а потом расширение. Так примерно
Код:
function NewFileName(FileName: String): String;
var n: Integer;
    s1,s2: String;
begin
  s2:=ExtractFileExt(FileName);
  if s2<>'' then s1:=Copy(FileName,1,Length(FileName)-Length(s2))
            else s1:=FileName;
  Result:=FileName;
  n:=0;
  while FileExists(Result) do begin
    Inc(n);
    Result:=Format('%s (%d)%s',[s1,n,s2]);
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.06.2013 в 11:41.
Аватар вне форума Ответить с цитированием
Старый 19.06.2013, 12:35   #5
Eugene_Stoun
Пользователь
 
Аватар для Eugene_Stoun
 
Регистрация: 14.06.2013
Сообщений: 56
По умолчанию

Огромное спасибо за помощь
Учиться, учиться и еще раз учиться!
Eugene_Stoun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все тот же студент и известным все списком pinkiller Общие вопросы C/C++ 6 05.01.2012 18:40
Все тот же char Godod Общие вопросы C/C++ 8 01.06.2010 14:33
все тот же с++ Александе еть я Общие вопросы C/C++ 0 27.04.2010 22:29
все тот же ассемблер Александе еть я Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 31.03.2010 17:54
Все тот же Pascal dinozavr Помощь студентам 6 19.04.2009 21:03