| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Программы для расстановки табуляции в исх *.pas |
| Автор: zetxi815eb 31.1.2007, 23:28 | ||
| Вот на каникулах захотелось мне сделать один проект. Я решил написать его из-за нашего препода по программированию. Мы ему сдаём лабы (файлы с расширением *.pas). Так вот, каждый раз он меняет размер табуляции в редакторе и если где-то стоит лишний пробел или неправильный отступ - он просто не принимает...даж не компилирует... А когда ещё сдаёшь в последний момент кучу лаб и около препода выстраивается очередь...и вот ты написал прогу..простоял эту очередь, сдаёшь ему эту работу и он находит там лишний отступ или пробел... и не принимает из-за этого лабу...и ты идёшь убирать этот пробел и опять стаишь эту очередь.... Короче я хочу написать программу, которая берёт по строке из файла *.pas. Сперва удаляет все пробелы и табуляции...затем уже расставляет символ табуляции там, где это требуется. Вот возникла проблема. Значит для пробы это программа ищет символ '_',который имеет код 95. 1 тест: Ввод: 1_2_3 Вывод: 123uses crt; 2 тест: Ввод: 1_2__3 (после двойки 2 символа '_') Вывод: 12_3
Люди...я ещё не очень подружился с типом string. Можете обьяснить в чём трабла? |
| Автор: skyboy 31.1.2007, 23:40 | ||||
надо начинать с конца.
причина: положим, идем сначала. слово "а_б_в__г___д" по циклу: i= 1 s="а_б_в__г___д" i= 2 s="а_б_в__г___д" удаляем второй символ i= 3 s="аб_в__г___д" удаляем третий символ i= 4 s="абв__г___д" удаляем четвертый символ i= 5 s="абв_г___д" пятый символ - не "_", а "г", потому ничего не удаляем i= 6 s="абв_г__д" удаляем шестой символ... и т.д. проблема в том, что когда мы удаляем 3(к примеру) символ, третим становится символ, который раньше был четвертым. И мы этот символ пропустим(ведь третий символ мы уже обработали!). Выхода два: либо после удаления символа перезапускать цикл с предыдущим значением i, либо проходить строку, начиная с конца. по второму пункту пример привел, а вот первый вариант: надо начинать с конца.
|
| Автор: Snowy 31.1.2007, 23:43 |
| А может просто не использовать табуляцию и писать грамотно? |
| Автор: zetxi815eb 31.1.2007, 23:58 |
| Snowy, как ты отступы делать будешь? skyboy, спасибо...просто я думал, что процедура delete (x,y,z) работает иначе. Я ещё в String не шарю. Спасибо за помощь! |
| Автор: Snowy 1.2.2007, 00:26 |
| Как и все нормальные люди - пробелами! |
| Автор: zetxi815eb 1.2.2007, 01:56 |
| Snowy, я по Tab size=4 привык делать...и мне не охото долбить пробел 4 раза....к тому же размер табуляции можно менять...это очень удобно и чётко всё! |
| Автор: Snowy 1.2.2007, 02:02 |
| Ну, вообще-то это должно настраиваться. А во-вторых задача сводится к замене #9 на 4 пробела. |
| Автор: skyboy 1.2.2007, 11:14 |
как же, интересно? |
| Автор: Zero 1.2.2007, 11:49 |
| zetxi815eb, я вот тоже табуляции недоверяю... А чем тебе пробелы не нравяться?? Их же не в каждой строчке вставлять надо, а только после необходимости отступа, а после нажатия ентер, курсор ставиться где нужно, и четыре пробела многовато, если будет много отступов, то плохо видно будет, ИМХО самый нормальный отступ 2 пробела. Добавлено @ 11:52 И кстати, это снови верно подметил... |
| Автор: zetxi815eb 1.2.2007, 20:31 |
| Zero, у меня стоит Tab size=4..мне удобно работать с табом...хочу делаюразмер таба 8, хочу 2. Короче прога Zetx Taber - Spacer будет универсальной!!! Пользователь сможет выбирать ставить пробелы,либо знак табуляции. Вот уже сырую версию сделал с табами.... посмотрите как работает: короче распакуйте архив...посмотрите файл input.txt.... запусти эксэшник...и должен создасться файл output.txt....затем сравни input.txt с output.txt http://zetxi815eb.jino-net.ru/forums/uploads/zetxtaber.rar |
| Автор: Coder 7.2.2007, 07:47 |
| zetxi815eb, отличная идея. я встречал такие программы для языка PHP, например. Для паскаля мне часто такой утилитки не хватало, когда разбирался в чужых исходниках. как закончишь программу выкладывай! можно ее также на Делфи переписать, чтобы удобней работать было. |
| Автор: zetxi815eb 15.2.2007, 06:23 |
| Довёл до ума программу. Теперь можно выбирать тип отступа. Либо табуляцию, либо пробел, указывая количества пробелов в отступе. http://zetxi815eb.jino-net.ru/tabspace.rar Потом ещё немного подработаю..и выдложу следующую версию. Coder, на делфе писать не стоит. Там и так не с чем работать. И весит она на паскале всего ничего. |