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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2008, 18:28   #1
teacher
Новичок
Джуниор
 
Регистрация: 12.02.2008
Сообщений: 2
По умолчанию копирование текстовых файлов

Доброе время суток, форумчане.
Все текстовые файлы *.txt переписываются из одного каталога в другой.
Допустим, в каталоге-приёмнике уже есть несколько текстовых файлов с такими же именами, как в каталоге исходнике. Для запроса на перезапись использовал функцию MessageDlg (только кнопки Yes и No для 1 файла). Как сделать так, чтобы Delphi по нажатию кнопки YesToAll делала перезапись сразу всех файлов, а по нажатию NoToAll - создавала новые файлы с именем типа копия+имя исходного файла?
Заранее спасибо.
teacher вне форума Ответить с цитированием
Старый 14.02.2008, 19:23   #2
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

для одного файла
Код:
if OpenDialog1.Execute then
if FileExists(OpenDialog1.FileName)then
  Memo1.Lines.SaveToFile('копия_'+OpenDialog1.FileName);
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 16.02.2008, 16:49   #3
teacher
Новичок
Джуниор
 
Регистрация: 12.02.2008
Сообщений: 2
По умолчанию

В программе не используются TMemo или TOpenDialog.
Компоненты: DriveComboBox1, DriveComboBox2, DirectoryListBox1,
DirectoryListBox2, FileListBox1, FileListBox2, Button1.
Исходник:
procedure Copy_File(name_of_file:string; source_dir, dest_dir:string);
var tmp:TStringList;
begin
tmp:=TStringList.Create;
tmp.LoadFromFile(source_dir+'\'+nam e_of_file);
tmp.SaveToFile(dest_dir+'\'+name_of _file);
tmp.Free;
end;

procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
DirectoryListBox1.Drive:=DriveCombo Box1.Drive;
end;

procedure TForm1.DirectoryListBox1Change(Send er: TObject);
begin
FileListBox1.Directory:=DirectoryLi stBox1.Directory;
FileListBox1.Drive:=DriveComboBox1. Drive;
end;

procedure TForm1.DriveComboBox2Change(Sender: TObject);
begin
DirectoryListBox2.Drive:=DriveCombo Box2.Drive;
end;

procedure TForm1.DirectoryListBox2Change(Send er: TObject);
begin
FileListBox2.Directory:=DirectoryLi stBox2.Directory;
FileListBox2.Drive:=DriveComboBox2. Drive;
end;

procedure TForm1.Button1Click(Sender: TObject);
var sr:TSearchRec;
begin
if FindFirst(FileListBox1.Directory+'\ '+’*.txt’, faAnyFile,sr)=0
then begin
repeat
if FileExists(FileListBox2.Directory+' \'+sr.Name)
then begin
if MessageDlg('Файл '+sr. Name+
' уже существует.Перезаписать его?',
mtConfirmation,[mbYes, mbNo],0)=mrYes
then Copy_File(sr.Name,
FileListBox1.Directory, FileListBox2.Directory)
else Copy_File('Копия '+sr.Name,
FileListBox1.Directory, FileListBox2.Directory);
end
else Copy_File (sr.Name, FileListBox1.Directory, FileListBox2.Directory);
FileListBox2.Update;
until FindNext(sr)<>0;
end;
FindClose(sr);
end;
teacher вне форума Ответить с цитированием
Старый 16.02.2008, 20:06   #4
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

FileExists(FileName) - проверка
CopyFile(OldFile,NewFile,Replace) - копирование
OldFile - прежнее расположение
NewFile - новое расположение
Replace - (True,False) разрешить/запретить замену если файл сушествует.

Юзай!
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 16.02.2008, 20:29   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Открываем хэлп и изучаем 2 функции для копирования файлов:
1. CopyFile(LPCTSTR lpszExistingFile, LPCTSTR lpszNewFile, BOOL fFailIfExists)
2. CopyFileEx( LPCWSTR lpExistingFileName, // pointer to name of an existing file
LPCWSTR lpNewFileName, // pointer to filename to copy to
LPPROGRESS_ROUTINE lpProgressRoutine, // pointer to the callback function
LPVOID lpData, // to be passed to the callback function
LPBOOL pbCancel, // flag that can be used to cancel the operation
DWORD dwCopyFlags // flags that specify how the file is copied
);
Все варианты в них предусмотрены.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор компонента для работы с содержимым текстовых файлов[Delphi] sergey31 Помощь студентам 2 28.08.2008 16:53
как загрузить в ListBox несколько текстовых файлов? One.Love Общие вопросы Delphi 5 14.01.2008 11:54
Слияние двух текстовых файлов nataly_ukr Общие вопросы Delphi 5 26.12.2007 16:45
копирование файлов matus Общие вопросы Delphi 2 07.11.2007 21:57
Сравнение текстовых файлов BR17UY Общие вопросы Delphi 15 07.05.2007 20:18