1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Опятьже Pascal

Тема в разделе 'Программирование', создана пользователем АндрюхиН, 18 окт 2010.

  1. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
  2. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    753
    Лайки:
    1.311
    Пол:
    Мужской
    Репутация:
    6
    1. MkDir(dir:string);

    2. Можно

    3.
    Код:
    procedure ScanDir(Dir: string);
    var
      SearchRec: TSearchRec;
    begin
      if Dir <> '' then
        if Dir[length(Dir)] <> '\' then
          Dir := Dir + '\';
    
      if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
        repeat
          if (SearchRec.name = '.') or (SearchRec.name = '..') then
            continue;
    
          if (SearchRec.Attr and faDirectory) <> 0 then
            ScanDir(Dir + SearchRec.name)
              //we found Directory: "Dir+SearchRec.name"
          else
            filename:=Dir + SearchRec.name; // тут писать то, что нужно делать с найденным файлом
          //we found File: "Dir+SearchRec.name"
    
        until
          FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
    end;
    
    
    // Пример использования
      ScanDir('c:');
    
    
    1 человеку нравится это.
  3. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    Спасибо, + поставил , еще вопрос... вот тут пусть правельно указан? в дельфи это делаю плюсиками, а в паскале также? Assign(ppc,'tests\'+TestGroup+'\'+TestName); если tests - уже готовая папка, а тест груп - переменная, тест нейм - тоже переменная
  4. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    753
    Лайки:
    1.311
    Пол:
    Мужской
    Репутация:
    6
    Delphi это и есть pascal.
  5. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    Может ктонить мне скзаать правельный путь? Assign(ppc,'tests\'+TestGroup+'\'+TestName);
  6. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    Assign(ppc,'tests\',TestGroup,'\',TestName);

    Так попробуй
  7. zombiee Пользователи

    Сообщения:
    18
    Лайки:
    11
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    ArtCoding Group
    Да тож там плюсами... А запятыми разделяются переменные, передаваемые функции / процедуре.
  8. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    странно если с плюсами он пишет типо не найден пусть.... Assign(ppc,'tests\'+TestGroup+'\'+TestName); TestGroup - папка testgroup:='1'; такая папка там есть.... а тест нейм - файл который должен создаваться в этой папке.. но когда пытаюсь создать с помощью rewrite он пишет типо не найден путь
  9. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    753
    Лайки:
    1.311
    Пол:
    Мужской
    Репутация:
    6
    Строковые переменные в паскале соединяются плюсами, а если пишет не найден путь, ты не думал что мб такого пути нет и косяк в содержимом твоих переменных?
    1 человеку нравится это.
  10. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    нет косяка нету... в папке tests есть папка 1 а TestGroup:='1';
  11. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    все великий Jolan мне помог!

    {Спасибо, конечно, но мог бы и написать, как я помог) Проблема была в том, что указывался неполный путь. Т.е. Программа лежала еще в одной подпапке. JoLan}
  12. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    Нет,покрайней мере я так не извращался х)
  13. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Код:
    program test02;
    uses crt;
    procedure myreadkey(a:char);
    begin
    repeat
    begin
    a:=readkey;
    if ord(a)<>13 then write(a)
    else if ord(a)=27 then halt;
    end;
    until (ord(a)=13) or (ord(a)=27);
    end;
    var ch:char;
    begin clrscr;
    myreadkey(ch);
    end.
    И использовать myreadkey вместо readln
    1 человеку нравится это.
  14. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    Это будет работать только когда окно программы (если его так можно назвать) будет активным.В противном случае идите вы в жопу он вам скажет.Такшо имел я этот способ (:.
    И да,ему нужен хот кей,т.е перехватить и выполнить действие а не небось какое гавно.
    +Важная заметка,не стоит пистить сорцы из гугла в то время как можно придумать самому

    Все ваш капитан очевидностЭ
  15. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Все, что я пишу, я всегда проверяю. Пишу на паскале, так что молчи, коли не знаешь.

    По теме: не учел, что нужна строка на выходе:
    Код:
    program test02;
    uses crt;
    
    function myreadkey(a:char):string;
    var result:string;
    begin
    result:='';
    repeat
    begin
    a:=readkey;
    if ord(a)<>13 then
    begin
    write(a);
    result:=result+a;
    end
    else if ord(a)=13 then myreadkey:=result
    else if ord(a)=27 then halt;
    end;
    until ord(a)=13;
    end;
    
    var ch:char;
    begin clrscr;
    myreadkey(ch);
    readln;
    end.
    А по-другому и не надо... Ты хочешь, чтоб текст вводился в неактивное окно? Оригинально.
    1 человеку нравится это.
  16. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    Да и вообще, проще не творить этого геморроя, а сделать выход по команде. Допустим:

    Код:
    ...
    readln(a);
    if a='goto begin' then goto label1;
    ...
    1 человеку нравится это.
  17. TheMazzahaka Пользователи

    Сообщения:
    223
    Лайки:
    76
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    J-Games Dev
    И да.В 7.1 есть стандартный HotKey такшо шатал я эту самопалину.

    Всегда ваш кэп.
  18. JoLan Команда форума Администратор AngeliCore Программист

    Сообщения:
    1.061
    Лайки:
    945
    Пол:
    Мужской
    Репутация:
    6
    Команда:
    AngeliCore
    Страна:
    Russian Federation Russian Federation
    {offtop: Ладно хорош оффтопить, для этого есть ася)
    З.Ы. И не "самопал", а пользовательская функция :D}
  19. TopicStarter Overlay

    АндрюхиН Пользователи

    Сообщения:
    66
    Лайки:
    2
    Репутация:
    0
    Очень прошу.... подробно... разжевать следующее... т.к. мне не нужно тупо скопировать это. мне нужно это понимать и использовать.....
    Код:
    procedure ScanDir(Dir: string);
    var
    SearchRec: TSearchRec;
    begin
    if Dir <> '' then
    if Dir[length(Dir)] <> '\' then
    Dir := Dir + '\';
    
    if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then
    repeat
    if (SearchRec.name = '.') or (SearchRec.name = '..') then
    continue;
    
    if (SearchRec.Attr and faDirectory) <> 0 then
    ScanDir(Dir + SearchRec.name)
    //we found Directory: "Dir+SearchRec.name"
    else
    filename:=Dir + SearchRec.name; // тут писать то, что нужно делать с найденным файлом
    //we found File: "Dir+SearchRec.name"
    
    until
    FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
    end;
    
    
    // Пример использования
    ScanDir('c:');
  20. alexdnepro Эксперт AngeliCore Пользователи Open Source Contributor White List

    Сообщения:
    753
    Лайки:
    1.311
    Пол:
    Мужской
    Репутация:
    6
    Код:
    
    procedure ScanDir(Dir: string);
    var
      SearchRec: TSearchRec;
    begin
      if Dir <> '' then                            // Если переменная dir не пустая
        if Dir[length(Dir)] <> '\' then       //  то проверяем если в конце строки нет слеша
          Dir := Dir + '\';                            //  то добавляем его
    
      if FindFirst(Dir + '*.*', faAnyFile, SearchRec) = 0 then           // Начинаем искать все файлы в директории, если хоть что-то есть
        repeat                                                                                  // то начинаем цикл
           if (SearchRec.name = '.') or (SearchRec.name = '..') then     // если нашли . или .. 
            continue;                                                                              // пропускаем их
    
          if (SearchRec.Attr and faDirectory) <> 0 then                      // если нашли папку
            ScanDir(Dir + SearchRec.name)                                           // функция вызывает сама себя для прохода найденной папки          
          else                                                                                     // если нет, то
            filename:=Dir + SearchRec.name;                                      // тут писать то, что нужно делать с найденным файлом      
        until                                                                                   // продолжаем цикл
          FindNext(SearchRec) <> 0;                                                // пока не закончатся файлы папки
      FindClose(SearchRec);                                                      // закрываем поиск файлов
    end;                                                                                   // аминь
    
    
    
    1 человеку нравится это.
Черновик сохранён Черновик удалён

Поделиться этой страницей