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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2018, 12:05   #1
Syns1992
Пользователь
 
Регистрация: 26.07.2018
Сообщений: 16
По умолчанию Сделайте такую программу (копирования файлов из одной папки в другую)

1. При нажатии на кнопку выскакивало меню выбора папки.
2. Когда мы выбрали допустим папку DATA , она тут же скопировалась вместе с вложенными
файлами в папку TEMP.
3. Также одновременно скопировались файлы по маске txt из папки DATA в папку Program\in
4. Запустить файл LongLatPicker.jar
5. Скопировать файлы по маске txt из папки Program\out в папку TEMP.

В итоге в дереве папки TEMP олжна быть папка DATA и уже обработан файл txt
Архив приложен к сообщению.
Всем спасибо заранее .
Вложения
Тип файла: 7z TEST.7z (15.1 Кб, 8 просмотров)
Syns1992 вне форума Ответить с цитированием
Старый 01.08.2018, 12:13   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

восхищает ваша вера в альтруизм.

Или Вы просто с разделом ошиблись? Может быть, Вам нужен раздел заказа программ за деньги?

и при чём здесь Delphi?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.08.2018, 12:19   #3
Syns1992
Пользователь
 
Регистрация: 26.07.2018
Сообщений: 16
По умолчанию

Прошу сделать , всем кому не сложно , я в заголовке написал слово Прошу , так тема не создалась . ошибка

Последний раз редактировалось Syns1992; 01.08.2018 в 12:22.
Syns1992 вне форума Ответить с цитированием
Старый 01.08.2018, 12:28   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Syns1992 Посмотреть сообщение
Прошу сделать , всем кому не сложно , я в заголовке написал слово Прошу , так тема не создалась . ошибка
я понял Вас.
Хорошо.
Желаю удачи!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.08.2018, 14:31   #5
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию


А блокнот не решает проблемы, там при нажатии опен филе - есть выбор.
Да и проводник винды в помощь, копируй что хочешь и переноси куда надо.
z-wer вне форума Ответить с цитированием
Старый 01.08.2018, 14:35   #6
Syns1992
Пользователь
 
Регистрация: 26.07.2018
Сообщений: 16
По умолчанию

Цитата:
Сообщение от z-wer Посмотреть сообщение

А блокнот не решает проблемы, там при нажатии опен филе - есть выбор.
Да и проводник винды в помощь, копируй что хочешь и переноси куда надо.
Уже решил некоторые проблемы , теперь осталось сложное для меня .
У меня путь записался в переменную dir
теперь мне нужно с этой переменной скопировать тхт по маске в другую папку
Syns1992 вне форума Ответить с цитированием
Старый 01.08.2018, 15:00   #7
z-wer
Пользователь
 
Регистрация: 03.03.2010
Сообщений: 89
По умолчанию

Ну так есть выбор по маске и копируй куда надо файлы.
В чем проблемы.
z-wer вне форума Ответить с цитированием
Старый 01.08.2018, 15:07   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Syns1992 Посмотреть сообщение
Уже решил некоторые проблемы , теперь осталось сложное для меня .
вот. хочешь сделать хорошо - сделай это сам!

Но это не самое сложное.

Цитата:
Сообщение от Syns1992 Посмотреть сообщение
У меня путь записался в переменную dir
теперь мне нужно с этой переменной скопировать тхт по маске в другую папку
какой путь записался в переменную dir ?
в котором нужно искать файлы txt или путь, куда эти файлы нужно скопировать?
Вложенные папки нужно обрабатывать?


для начала я бы предложил такую процедуру:

Код:
uses ... Masks ...



var curFileCount : integer;



procedure DirSearchAndCopy(Dir: string; Mask : string; DirDest : string);
var
  SearchRec: TSearchRec;
  destFileName : string; 
begin
  Dir := IncludeTrailingBackslash(Dir);

  if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
    repeat
      Application.ProcessMessages;

      if (SearchRec.Attr and faDirectory) <> 0 then begin
         // рекурсия 
         if (SearchRec.name <> '.') and (SearchRec.name <> '..') then
                   DirSearchAndCopy(Dir + SearchRec.name, Mask, DirDest )

      end
      else begin
        if MatchesMask(ExtractFileName(SearchRec.Name), Mask) then begin
          destFileName := DirDest + '\' + SearchRec.Name;
          while FileExists( destFileName ) do begin
             Inc(curFileCount);
             destFileName := DirDest + '\' + IntToStr(curFileCount) + SearchRec.Name
          end; 
          CopyFile( PChar(Dir + SearchRec.Name), PChar( destFileName ), false);
        end;
      end;
    until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);
end;
вызывать так:

Код:
curFileCount := 1;
DirSearchAndCopy(dir, '*.txt', 'C:\TEMP')
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.08.2018, 09:13   #9
Syns1992
Пользователь
 
Регистрация: 26.07.2018
Сообщений: 16
По умолчанию

скопировало файл , но потом понатягивало туда еще файлов txt которых нет в тех папках
Хотя на второй раз уже нормально. Спасибо человек тебе .

Хотя нет , замечаю опять в папке уже txt на пол гига

Последний раз редактировалось Syns1992; 02.08.2018 в 10:00.
Syns1992 вне форума Ответить с цитированием
Старый 02.08.2018, 10:47   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Я как-то копирование так делал:

Код:
// Copyright from http://www.gunsmoker.ru/2015/01/never-use-ShellExecute.html
procedure WinExec(const ACmdLine: String;
                  const ACmdShow: UINT = SW_HIDE;
                  const AIsWait: boolean = WAIT);
var
  SI: TStartupInfo;
  PI: TProcessInformation;
  CmdLine: String;
begin
  Assert(ACmdLine <> '');

  CmdLine := ACmdLine;
  UniqueString(CmdLine);

  FillChar(SI, SizeOf(SI), 0);
  FillChar(PI, SizeOf(PI), 0);
  SI.cb := SizeOf(SI);
  SI.dwFlags := STARTF_USESHOWWINDOW;
  SI.wShowWindow := ACmdShow;

  SetLastError(ERROR_INVALID_PARAMETER);
  {$WARN SYMBOL_PLATFORM OFF}
  Win32Check(CreateProcess(nil, PChar(CmdLine), nil, nil, False,
                           CREATE_DEFAULT_ERROR_MODE
                           {$IFDEF UNICODE}
                           or CREATE_UNICODE_ENVIRONMENT
                           {$ENDIF},
                           nil, nil, SI, PI));
  {$WARN SYMBOL_PLATFORM ON}
  with PI do
  begin
    if AIsWait then
    begin
      WaitForInputIdle(hProcess, INFINITE);
      WaitforSingleObject(hProcess, INFINITE);
    end;
    CloseHandle(hThread);
    CloseHandle(hProcess);
  end
end; // WinExec


procedure CopyFiles(const ASourceDir: string; const ADestDir: string);
const
  cCmdCopyTemplate = 'xcopy "<SOURCE>" "<DESTINATION>" /E /Y';
var
  s_CmdLine: string;
begin
  s_CmdLine := StringReplace(cCmdCopyTemplate, '<SOURCE>',
                             ASourceDir, [rfReplaceAll]);
  s_CmdLine := StringReplace(s_CmdLine, '<DESTINATION>',
                             ADestDir, [rfReplaceAll]);
  if (pos('*.*', ASourceDir) = 0) then
    s_CmdLine := StringReplace(s_CmdLine, '/E', '', [rfReplaceAll]);
  WinExec(s_CmdLine, SW_HIDE, WAIT);
end; // CopyFiles
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование групы файлов из одной папки в другую Progsenya C# (си шарп) 1 30.04.2011 11:56
Переход из одной папки в другую sanya_oz PHP 3 03.01.2011 23:54
Перенос файла из одной папки в другую Amelie_L Microsoft Office Excel 6 29.01.2010 16:28
макрос для копирования строк из одной таблицы в другую IRI_NA Microsoft Office Excel 9 25.01.2010 20:55
Копирования строк из одной таблици в другую Andersen Microsoft Office Access 6 13.08.2008 10:46