На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> как правильно создать директории с , поддиректориями в чистом паскале
    в общем есть Log т.к. он большой, то надо сделать его архив.
    т.е. файл должен переноситься в директорию .\log\arhiv\год\месяц\день\File+FileNr.log
    проверить есть ли дериктория могу ChDir(tmp) создать MkDir(tmp) а вот как проверить и если надо создать всю дорожку?
      vladimir74, проходить по строке, "разбирать" ее на составляющие... Что-то в таком духе:
      ExpandedWrap disabled
        {
          Здесь - у тебя должна быть известна строка, определяющая путь...
          Я задал ее константой
        }
          _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;
          { Здесь - ты уже находишься в конечной папке, сюда и копируй файл }


      Не забудь потом вернуться в корневую папку, ибо в следующий раз ты будешь должен начать проход именно с нее...

      Кстати, попутно возник вопрос: ты как конструируешь этот самый путь? С годом, месяцем, числом? У тебя уже есть алгоритм? Или нужна помощь?
        Цитата volvo877 @
        Кстати, попутно возник вопрос: ты как конструируешь этот самый путь? С годом, месяцем, числом? У тебя уже есть алгоритм? Или нужна помощь?

        это я сделал (может чересчур просто)
        ExpandedWrap disabled
          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));

        а на счет второго, я сам себе голову ломал, что происходит пока не сообразил :D

        Добавлено
        volvo877
        огромное спасибо, все работает только в конце '\' поставил ....
        Сообщение отредактировано: vladimir74 -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0.0664 ]   [ 15 queries used ]   [ Generated: 23.10.26, 00:52 GMT ]