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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2009, 11:31   #1
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию Как создать новый каталог

день добрый, всем, вопрос такой, мне нужно создать папку с определенным именем по пути с:\123
смысл такой, создается папка с номером сегодняшнего дня, например если сегодня то папка с именем "16" ежели это будет 30е число, то с номером "30" и т.д. в нее каждый рабочи день будет копироваться содержимое папки "Ч". в итоге алгоритм такой, программа считала дату, создала по пути "с:\123\папка с номером даты" папку, и внее скопировала содержимое папки "Ч" из пути с:\1
MixanMM вне форума Ответить с цитированием
Старый 16.11.2009, 11:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так а проблема в чем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2009, 11:41   #3
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

в кривых руках )))) шутка, у меня вопрос камк это осуществить , воопщем оператор считывания даты из системы я нашел, d1 := DateToStr(Date)\\ это переменная с датой, а вот как мне создать папку что бы она брала имя папки эту переменную

ну и до кучи, как скопировать по пути данные из папки )

Последний раз редактировалось Stilet; 16.11.2009 в 12:42.
MixanMM вне форума Ответить с цитированием
Старый 16.11.2009, 12:08   #4
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Для начала начнем с простой функции для создания новой папки. Общий вид функции такой:
Код:
function CreateDir(const Dir: string): Boolean;
То есть если папка успешно создана функция возвращает true. Сразу же простой пример ее использования:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if createdir('c:\TestDir') = true then
    showmessage('Директория успешно создана')
  else
    showmessage('При создании директории произошла ошибка');
end;
При нажатии на кнопку программа пытается создать папку с именем TestDir на диске C: и если попытка увенчалась успехом, то выводится соответствующее сообщение. Следует отметить, что если вы не указываете имя диска, на котором хотите создавать папку, то функция будет создавать папку в той же директории, где находится сама программа.

Объявления:
Код:
createdir(edit1.text);// Сюда и прописывай свою переменную с учетом типа переменных
и
Код:
createdir(extractfilepath(paramstr(0)) + edit1.text);
приведут к одному и тому же результату.
Больше ТУТ

Создпние каталогов обсуждали ТУТ

Относительно копирования :
В delphi есть функция Сopyfile
Код:
procedure tform1.button1click(sender: tobject);
begin
if copyfile('c:1.txt','c:2.txt',true) then
showmessage('Файл успешно скопирован!')
else showmessage('Неудача!');
end;
Для того, чтобы точнее узнать при возникновении ошибки, что же все таки произошло, надо воспользоваться функцией getlasterror, которая возвращает код последней ошибки (формат dword). Теперь мы немного изменим пример:

Код:
procedure tform1.button1click(sender: tobject);
begin
if copyfile('c:1.txt','c:2.txt',true) then
showmessage('Файл успешно скопирован!')
else
showmessage('Ошибка! Вот ее код: '+inttostr(getlasterror));
end;
Таким образом нажав второй раз на кнопку мы получим сообщение: "Ошибка! Вот ее код: 80". Это говорит нам, что файл существует.
Коды всех ошибок можно легко найти в хелпе.

Тема копирования уже обсуждалась на форуме - ТУТ - пользуйтесь поиском !!!

Последний раз редактировалось Noor; 16.11.2009 в 12:25.
Noor вне форума Ответить с цитированием
Старый 16.11.2009, 12:27   #5
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

хм, не совсем то воопщем у меня получилось так:
TForm1.FormCreate(Sender: TObject);
begin
d1:= DateToStr(Date);\\СЧИТАЛ дату в переменную
label1.Caption:=d1;\\проверил на метке та ли дата(можно и без этого);
CreateDir(d1);\\создал папку с этим именем
end;

end.
теперь нужно скопировать в эту папку, 4 папки по пути с:\123\2
MixanMM вне форума Ответить с цитированием
Старый 16.11.2009, 12:44   #6
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Ну так пробуй так ....
Код:
procedure tform1.button1click(sender: tobject);
begin
if copyfile('c:\4\*.*','с:\123\2',true) then
showmessage('Файл успешно скопирован!')
else
showmessage('Ошибка! Вот ее код: '+inttostr(getlasterror));
end;
или создай bat файл для копирования файлов !
Код:
copy c:\4\*.* с:\123\2 /y

где /y - Отмена вывода запроса на подтверждение перезаписи существующего конечного файла.

Последний раз редактировалось Noor; 16.11.2009 в 12:52.
Noor вне форума Ответить с цитированием
Старый 16.11.2009, 12:58   #7
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию

воопщем вроде работает, но не до конца, мне нужно в созданную папку с датой 16,11,2009 вставить папки(!!! не файлы) из пути диск с:\123\1 в путь v:\1\16.11.2009, при этом каждый день папка назначения будет меняться, т.е завтра это будет папка v:\1\17.11.2009 и в нее нужно будет вставить папки(не файлы, файлов там нет, а папки 4шт пусты) из с:\123, и так каждый рабочий день, вот

а можно без батника, т.е я пришел на раб, запустил прогу, она создала папку с именем 17,11,2009 на диске "v:\" и в эту папку скопировала содержимое папки с диска "с:\123", и послезавтра я пришел она создала папку 18,11,2009 на диске "v:\" и в эту скопировала одержимое папки с диска "с:\123" и так каждый день запуска компа, при этом у меня в переменной d1 сохранено имя кноечной папки в которую надо скопировать из с:\123

после ночи недосыпа, получил вот такой код:
Код:
var
  Form1: TForm1;
  d1:string;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var  OpStruc: TSHFileOpStruct;
  frombuf, tobuf: Array [0..128] of Char; 
begin  FillChar( frombuf, Sizeof(frombuf), 0 ); 
  FillChar( tobuf, Sizeof(tobuf), 0 ); 
  StrPCopy( frombuf, Edit1.Text+'*.*' ); 
StrPCopy( tobuf, Edit2.Text ); 
with OpStruc do begin Wnd := Handle; wFunc := FO_COPY;
pFrom := @frombuf; pTo := @tobuf;
fFlags := FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False; hNameMappings := Nil;
lpszProgressTitle := Nil; end; ShFileOperation( OpStruc );

 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 d1:= DateToStr(Date);
    label1.Caption:=d1;
     CreateDir(d1);
     edit1.Text:= 'c:\(откуда)\';
     edit2.text:= 'v:\куда\'+d1;
end;

end.
всем спасибо

Последний раз редактировалось Stilet; 17.11.2009 в 07:53.
MixanMM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А можно ли из формы создать новый лист с именем вводимым на форме Lis000iq Microsoft Office Excel 4 29.06.2009 19:20
Как сделать электронный каталог продукции? natarius PHP 7 01.03.2009 21:55
копирование бд (access) в новый каталог Tanuska___:) БД в Delphi 2 14.01.2009 11:01
Как создать новый файл Word из макроса Excel? Dorvir Microsoft Office Excel 12 08.07.2008 16:50
Как обозначается корневой каталог программы? BeeX Свободное общение 1 25.11.2007 20:25