как правильно создать директории с
, поддиректориями в чистом паскале
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.168] |
|
|
как правильно создать директории с
, поддиректориями в чистом паскале
|
Сообщ.
#1
,
|
|
|
|
в общем есть Log т.к. он большой, то надо сделать его архив.
т.е. файл должен переноситься в директорию .\log\arhiv\год\месяц\день\File+FileNr.log проверить есть ли дериктория могу ChDir(tmp) создать MkDir(tmp) а вот как проверить и если надо создать всю дорожку? |
|
Сообщ.
#2
,
|
|
|
|
vladimir74, проходить по строке, "разбирать" ее на составляющие... Что-то в таком духе:
![]() ![]() { Здесь - у тебя должна быть известна строка, определяющая путь... Я задал ее константой } _dir := '\log\arhiv\2006\4\5\'; while _dir <> '' do begin if _dir[1] = '\' then delete(_dir, 1, 1); p := pos('\', _dir); if p > 0 then begin s := copy(_dir, 1, p - 1); {$i-} chdir(s); { Сначала пытаешься перейти в эту директорию } {$i+} if ioresult <> 0 then begin { Если ты здесь - значит при попытке выполнения ChDir была ошибка, а значит эта папка пока не существует... Создаем и переходим в нее } MkDir(s); ChDir(s); end; delete(_dir, 1, length(s)+1); { Убираем то, что уже есть из пути } end; { Здесь - ты уже находишься в конечной папке, сюда и копируй файл } Не забудь потом вернуться в корневую папку, ибо в следующий раз ты будешь должен начать проход именно с нее... Кстати, попутно возник вопрос: ты как конструируешь этот самый путь? С годом, месяцем, числом? У тебя уже есть алгоритм? Или нужна помощь? |
|
Сообщ.
#3
,
|
|
|
|
Цитата volvo877 @ Кстати, попутно возник вопрос: ты как конструируешь этот самый путь? С годом, месяцем, числом? У тебя уже есть алгоритм? Или нужна помощь? это я сделал (может чересчур просто) ![]() ![]() function IntToStr(Value:Integer):string; var s : string; begin Str(Value,s); IntToStr := s; end; function WordToStr(Value:Word):string; var s : string; begin Str(Value,s); if Length(s) = 1 then s := '0'+s; WordToStr := s; end; ........ GetDate(y,mm,d,dow); {моя строка} ArhivName := CreateDirectory('.\Log\Arhiv\'+IntToStr(y)+IntToStr(mm)+WordToStr(d)); а на счет второго, я сам себе голову ломал, что происходит пока не сообразил Добавлено volvo877 огромное спасибо, все работает только в конце '\' поставил .... |