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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2007, 09:38   #1
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию CreateDirectory

Привет всем!
Создаю новую директорию:
Код:
CreateDirectory(Pchar(ExtractFilePath(application.exename)+'scan\date'), nil);
но нужно, чтобы имя последней директории (в данном случае 'date') соответствовало сегодняшней дате! как это написать?
John_chek вне форума Ответить с цитированием
Старый 30.05.2007, 09:50   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

CreateDirectory(Pchar(ExtractFilePa th(application.exename)+'scan\' + DateTostr(Date)), nil)
Баламут вне форума Ответить с цитированием
Старый 30.05.2007, 10:01   #3
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

1) Спс, работает, но...! Теперь, если каталога 'Scan' не существует, то не работает. Ошибок не выдает, просто каталоги не создаются. А если Scan есть то все нормал. что это?
2) Сразу встречный вопрос, нужно чтобы новый каталог создавался каждое 1 число месяца, т.е.:
Код:
    if date = StrToDate('01.  .    ')  then
      begin
CreateDirectory(Pchar(ExtractFilePath(application.exename)+'scan\'+DateToStr(Date)), nil);
      end;
но там ошибка, как написать??чтобы срабатывало только 01 числа независимо от месяца и года?

Последний раз редактировалось John_chek; 30.05.2007 в 10:20.
John_chek вне форума Ответить с цитированием
Старый 30.05.2007, 10:44   #4
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Раздели функцию: сначала создай директорию scan а потом уже свою. Просто у тебя эта функция пытается создать директорию в директории которой не существует(извини за тафтологию). Лучше поставь проверку на наличие дироектории scan и в случае если она не существует, то создавай её это будет правильнее.
Удачи.
Трофимов Александр вне форума Ответить с цитированием
Старый 30.05.2007, 10:57   #5
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

по второму вопросу попробуй проверку текущей даты:
if (datetostr(Now)[1]='0') and (datetostr(Now)[2]='1') then Первое число месяца
Трофимов Александр вне форума Ответить с цитированием
Старый 30.05.2007, 11:39   #6
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Трофимов Александр Посмотреть сообщение
по второму вопросу попробуй проверку текущей даты:
if (datetostr(Now)[1]='0') and (datetostr(Now)[2]='1') then Первое число месяца
Впринципе и так работает. сделал почти тоже самое, немного по другому:
Код:
var dt: TDateTime;
    Year, Month, Day :Word;
begin
    dt := date;
    DecodeDate(dt, Year, Month, Day);
if day = 01 then
      begin
CreateDirectory(Pchar(ExtractFilePath(application.exename)+'scan\'+DateToStr(Date)), nil);
      end
Опять загвоздка, а если 01 число будет суббота или воскресенье, то прога не будет запущена и каталог не будет создан! Нужна какая-то проверка еще и по месяцу. Нужно хранить номер месяца(MonthOld) и сравнивать его с текущим номером(MonthNow), что-то типа этого, а где хранить MonthOld, где ему значение присваивать? Запутался

Последний раз редактировалось John_chek; 30.05.2007 в 11:51.
John_chek вне форума Ответить с цитированием
Старый 30.05.2007, 12:47   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,091
По умолчанию

кажеца в uses DateUtils есть функция DayOf, которая возвращает число месяца даты
pu4koff вне форума Ответить с цитированием
Старый 30.05.2007, 13:12   #8
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Ну если дата не принципиальна, тогда создавай директорию по номеру месяца и первое число ни причём:
var dt: TDateTime;
Year, Month, Day :Word;
begin
dt := date;
DecodeDate(dt, Year, Month, Day);
if DirectoryExists(Pchar(ExtractFilePa th(application. exename)+'scan\'+inttostr(Month)+'. '+inttostr(Year))=false then
begin
CreateDirectory(Pchar(ExtractFilePa th(application.exename)+'scan\'+int tostr(Month)+'.'+inttostr(Year)), nil);
end;
Трофимов Александр вне форума Ответить с цитированием
Старый 30.05.2007, 13:14   #9
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
кажеца в uses DateUtils есть функция DayOf, которая возвращает число месяца даты
Думаю ему это не пойдёт, потому что даже понедельник бывает праздником
Трофимов Александр вне форума Ответить с цитированием
Старый 30.05.2007, 14:43   #10
John_chek
Форумчанин
 
Аватар для John_chek
 
Регистрация: 24.01.2007
Сообщений: 108
По умолчанию

Большой респект! Все получилось, супер просто!!!
John_chek вне форума Ответить с цитированием
Ответ


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